![]() |
|
Ведение двух документов под одним номером в одном списке, возможно? | ☑ | ||
---|---|---|---|---|
0
demous
13.01.12
✎
09:14
|
Упп 8.2 задача в том, что бы в ПереченьПлатежей (самописный для Клиент-Банк, но писался давно и не мной), сделать так, чтобы можно было формировать два документа под одним номером, под разные организации ( Справочник.Организация - является плательщиком ), суть в том, что задается вручную первый номер ПП и дальше они формируются автоматически ( +1 ) но на одном сервере работают две компании, и по этому идет наложение номеров и выдается ошибка, выгрузки не происходит
вот нашел такие функции в коде Функция СледующийНомер(Номер) Длина = СтрДлина(Номер); Для Ит=1 По Длина Цикл СтрокаПодЧисло = Прав(Номер, Длина-Ит+1); Попытка ЧислоСтр = Число(СтрокаПодЧисло); Если Цел((ЧислоСтр+1)/1000) = (ЧислоСтр+1)/1000 Тогда //На "000" номер оканчиваться не может ЧислоСтр = ЧислоСтр+1; КонецЕсли; НовНомер = Лев(Номер, Ит-1)+Прав("00000000000"+Формат(ЧислоСтр+1, "ЧДЦ=0; ЧС=0; ЧГ=0"), Длина-Ит+1); Прервать; Исключение НовНомер = ""; КонецПопытки; КонецЦикла; Возврат НовНомер; КонецФункции Функция ПоследнийНомерПлатежки() Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ПлатежноеПоручениеИсходящее.Номер |ИЗ | Документ.ПлатежноеПоручениеИсходящее КАК ПлатежноеПоручениеИсходящее |ГДЕ | ПлатежноеПоручениеИсходящее.Дата МЕЖДУ НАЧАЛОПЕРИОДА(&Дата, ГОД) И КОНЕЦПЕРИОДА(&Дата, ГОД) | |УПОРЯДОЧИТЬ ПО | ПлатежноеПоручениеИсходящее.Номер УБЫВ |АВТОУПОРЯДОЧИВАНИЕ"; Запрос.УстановитьПараметр("Дата", Дата); Выборка = Запрос.Выполнить().Выбрать(); Если Выборка.Следующий() Тогда Возврат Выборка.Номер; Иначе ТипаНовДок = Документы.ПлатежноеПоручениеИсходящее.СоздатьДокумент(); ТипаНовДок.Дата = Дата; ТипаНовДок.УстановитьНовыйНомер(); Возврат ТипаНовДок.Номер; //ТипаНовДок = Неопределено; КонецЕсли; КонецФункции |
|||
1
Guk
13.01.12
✎
09:16
|
возможно. используй префиксы по организации...
|
|||
2
demous
13.01.12
✎
09:17
|
по префиксы была идея, но как их использовать? как реализовать это?
|
|||
3
ДенисЧ
13.01.12
✎
09:17
|
Сними контроль уникальности и вводит сколько хочешь :-)
|
|||
4
rs_trade
13.01.12
✎
09:23
|
ТипаНовДок.УстановитьНовыйНомер(ПрефиксОрганизации);
|
|||
5
rs_trade
13.01.12
✎
09:24
|
(2) открой уже для себя СП
|
|||
6
demous
13.01.12
✎
09:29
|
rs_trade
4 - 13.01.12 - 09:23 ТипаНовДок.УстановитьНовыйНомер(ПрефиксОрганизации); переменная не определенна.. ДенисЧ 3 - 13.01.12 - 09:17 Сними контроль уникальности и вводит сколько хочешь :-) Где его снаять? Сорри но вот атк вот я ещ мало знаю( |
|||
7
Vovan1975
13.01.12
✎
09:31
|
бугага
|
|||
8
Maxus43
13.01.12
✎
09:32
|
в справочнике Организации префиксы указываются, шо мозг выносиш в пятницу
|
|||
9
demous
13.01.12
✎
09:38
|
просто указать префикс в коде, или как?
|
|||
10
demous
13.01.12
✎
09:39
|
у вас у всех большой стаж работы, у меня три с половиной месяца, поэтому я и прошу помощи!
|
|||
11
Maxus43
13.01.12
✎
09:39
|
(9) открой справочник уже. там по руски написано - Префикс - поле есть
|
|||
12
demous
13.01.12
✎
09:40
|
да, есть префикс, на эти организации первый AP Второй CB
|
|||
13
Maxus43
13.01.12
✎
09:41
|
ну вот, для разных организаций ставиш разный префикс, при создании новый документов в номер автоматом будет он ставится
|
|||
14
demous
13.01.12
✎
09:52
|
а в коде как мне это отобразить?
Заранее спасибо большое! |
|||
15
Maxus43
13.01.12
✎
09:53
|
всмысле в коде? префикс автоматом для новых доков будет ставится. старые надо переделать чтоли?
|
|||
16
demous
13.01.12
✎
09:58
|
Префикс существует для организаций же давно, но проблема с номерами актуально, номер 23 на одну организацию и номер 23 ( например ) на другую организацию не создается, только порядковые номера и все, дублирования нету.... ошибка...
|
|||
17
Maxus43
13.01.12
✎
10:02
|
АР23 и СВ23 должны быть номера у них же
|
|||
18
demous
13.01.12
✎
10:07
|
http://rghost.ru/35880847/image.png вот скрин справочника
|
|||
19
Maxus43
13.01.12
✎
10:11
|
(18) правильно всё, в коде организации префикса и не должно быть, в коде НОВЫХ дрокументов будут соответствующие префиксы
|
|||
20
demous
13.01.12
✎
10:14
|
так, значит получается на практике у меня сейчас должно все работать так как мне надо? номера документов должны создаваться по организациям, и в списке общем они могут быть дублированы ? если да, то почему этого нету?
|
|||
21
Maxus43
13.01.12
✎
10:23
|
щас с разными создаются номерами? префикс ставится у новых доков? я кстати не помню в одной базе будут ли они автоматом в пределах префикса нумероваться...
|
|||
22
demous
13.01.12
✎
10:26
|
сейчас да, создаются с разными номерами... то есть на обе организации общий список номеров
|
|||
23
Maxus43
13.01.12
✎
10:32
|
в пределах одной базы значит общая нумерация...
|
|||
24
demous
13.01.12
✎
10:36
|
как-то это можно исправить хотя бы непосредственно к этому документу?
|
|||
25
demous
13.01.12
✎
10:46
|
просто в начале года проблема очень актуальна..нумерация начинается снова с ( 1 )
|
|||
26
Maxus43
13.01.12
✎
10:52
|
нумерация снова с 1 это правильно, в пределах года идёт
|
|||
27
demous
13.01.12
✎
10:54
|
ну вот, а компании работают две на одной базе... и возникает путаница с нумерацией, всем надо с единицы, а кто первый занял двадцать например, и все, у второй компании начнется с 21, а банки требуют с нуля...
|
|||
28
demous
13.01.12
✎
10:54
|
с " 1 "
|
|||
29
demous
13.01.12
✎
10:57
|
что сделать чтоб номера создавались с префиксом?
|
|||
30
Maxus43
13.01.12
✎
10:57
|
щас без префикса чтоли создаются?
|
|||
31
demous
13.01.12
✎
11:04
|
да, щас создаются без префикса.....
|
|||
32
БибиГон
13.01.12
✎
11:06
|
конфа у вас правленная?
|
|||
33
demous
13.01.12
✎
11:09
|
изменения вносились
|
|||
34
rs_trade
13.01.12
✎
11:14
|
Чего мозг человеку выносите. Тебе префикс в твою функцию надо передавать как параметр
Функция ПоследнийНомерПлатежки(ПрефиксОрганизации) .... ТипаНовДок.УстановитьНовыйНомер(ПрефиксОрганизации); .... КонецФункции |
|||
35
demous
13.01.12
✎
11:16
|
rs_trade
спасибо большое, сейчас попробуем! |
|||
36
demous
13.01.12
✎
11:21
|
не помогло, сздаются без префикса(
|
|||
37
demous
13.01.12
✎
11:28
|
вот еще кое - что, может поможет
Процедура ДействияФормыСформироватьПлатежки(Кнопка) Если не ЗначениеЗаполнено(ЭтаФорма.НомерПлатежки) Тогда Предупреждение("Не удалось создать документы отсутсвует первый номер платежки!!!"); Возврат; КонецЕсли; Если Вопрос("После создания платежек документ будет записан. Продолжить", РежимДиалогаВопрос.ДаНет) = КодВозвратаДиалога.Нет Тогда Возврат; КонецЕсли; ТекНомер = НомерПлатежки; Для Каждого Стр Из Платежи Цикл Если (ЗначениеЗаполнено(Стр.ПлатежноеПоручение) И Стр.ПлатежноеПоручение.СуммаДокумента=Стр.КПеречислению) Или Стр.КПеречислению<=0 Или Не ЗначениеЗаполнено(Стр.Заявка) Тогда Продолжить; КонецЕсли; ТекНомер = СледующийНомер(ТекНомер); СоздатьДокументПоЗаявкеНаСумму(Стр, ТекНомер); КонецЦикла; Записать(); КонецПроцедуры |
|||
38
rs_trade
13.01.12
✎
11:36
|
(37) Функция ПоследнийНомерПлатежки не используется же получается.
|
|||
39
Maxus43
13.01.12
✎
11:37
|
(38) а как не выносить мозг когда там чуть не самописка со сломаным типовым функционалом
|
|||
40
demous
13.01.12
✎
11:42
|
rs_trade
38 - 13.01.12 - 11:36 (37) Функция ПоследнийНомерПлатежки не используется же получается. почему? |
|||
41
demous
13.01.12
✎
11:43
|
Maxus43
39 - 13.01.12 - 11:37 (38) а как не выносить мозг когда там чуть не самописка со сломаным типовым функционалом писалось все при установке 1с, специалистами из московской компании |
|||
42
Maxus43
13.01.12
✎
11:44
|
(41) ну вот и понаписали "специалисты". причем судя по коду смысла особо нет, тем более в платёжках, но хоть денег заработали...
|
|||
43
demous
13.01.12
✎
11:46
|
как это исправить?
|
|||
44
Maxus43
13.01.12
✎
11:54
|
что в процедуре СоздатьДокументПоЗаявкеНаСумму()?
|
|||
45
Maxus43
13.01.12
✎
11:54
|
и кстати как это вобще работает?
КонецЦикла; Записать(); КонецПроцедуры |
|||
46
demous
13.01.12
✎
11:56
|
Процедура СоздатьДокументПоЗаявкеНаСумму(СтрокаТЧ, НомерДока)
Заявка = СтрокаТЧ.Заявка; Сумма = СтрокаТЧ.КПеречислению; //Заявка = Документы.ЗаявкаНаРасходованиеСредств.НайтиПоНомеру(); Если Заявка.ФормаОплаты = Перечисления.ВидыДенежныхСредств.Безналичные Тогда Документ = Документы.ПлатежноеПоручениеИсходящее.СоздатьДокумент(); Документ.НазначениеПлатежа = СокрЛП(СтрокаТЧ.ОснованиеПлатежа) + " По счету "+СтрокаТЧ.НомерСчета; Документ.Заполнить(Заявка); УправлениеДенежнымиСредствами.ЗаполнитьРеквизитыРасчетногоДокумента(Документ, глЗначениеПеременной("глТекущийПользователь"), Документ.мВалютаРегламентированногоУчета,Документ.РасшифровкаПлатежа,,Заявка); Если ЗначениеЗаполнено(СтрокаТЧ.Счет) И ТипЗнч(СтрокаТЧ.Счет) = Тип("СправочникСсылка.БанковскиеСчета") Тогда Документ.СчетОрганизации = СтрокаТЧ.Счет; КонецЕсли; Документ.Дата = Дата; Если Документ.РасшифровкаПлатежа.Количество()>0 Тогда ВалютаВзаиморасч = СтрокаТЧ.ВалютаВзаиморасчетов; Документ.РасшифровкаПлатежа[0].СуммаВзаиморасчетов = МодульВалютногоУчета.ПересчитатьИзВалютыВВалюту(Сумма, ВалютаДокумента, ВалютаВзаиморасч, МодульВалютногоУчета.ПолучитьКурсВалюты(ВалютаДокумента, КонецДня(Дата)).Курс, МодульВалютногоУчета.ПолучитьКурсВалюты(ВалютаВзаиморасч, КонецДня(Дата)).Курс) ; Документ.РасшифровкаПлатежа[0].СуммаПлатежа = Сумма; Документ.РасшифровкаПлатежа[0].ДокументПланированияПлатежа = Заявка; Документ.РасшифровкаПлатежа[0].СтавкаНДС = Заявка.РасшифровкаПлатежа[0].СтавкаНДС; УправлениеДенежнымиСредствами.ПересчитатьСуммуНДС(Документ.РасшифровкаПлатежа[0]); //Документ.РасшифровкаПлатежа[0].СуммаНДС = Заявка.РасшифровкаПлатежа[0].СуммаНДС; КонецЕсли; Документ.СуммаДокумента = Сумма; Документ.ОтражатьВБухгалтерскомУчете = Истина; УправлениеДенежнымиСредствами.ЗаполнитьСчетаУчетаПлатежейБУ(Документ,глЗначениеПеременной("глТекущийПользователь"),Истина); //Документ.Оплачено = Истина; //Документ.ДатаОплаты = Дата; //Если НЕ Документ.Организация.Пустая() Тогда // Документ.ИННПлательщика = Документ.Организация.ИНН; // Документ.КПППлательщика = Документ.Организация.КПП; //КонецЕсли; //Если НЕ Документ.Контрагент.Пустая() Тогда // Документ.ИННПолучателя = Документ.Контрагент.ИНН; // Документ.КПППолучателя = Документ.Контрагент.КПП; //КонецЕсли; АвтоЗначенияРеквизитов = ФормированиеПечатныхФорм.СформироватьАвтоЗначенияРеквизитовПлательщикаПолучателя( Документ.Организация, Документ.СчетОрганизации, Документ.Контрагент, Документ.СчетКонтрагента, Документ.ВидОперации, Документ.ПеречислениеВБюджет); Документ.ТекстПлательщика = АвтоЗначенияРеквизитов.ТекстПлательщика; Документ.ИННПлательщика = АвтоЗначенияРеквизитов.ИННПлательщика; Документ.КПППлательщика = АвтоЗначенияРеквизитов.КПППлательщика; Документ.ТекстПолучателя = АвтоЗначенияРеквизитов.ТекстПолучателя; Документ.ИННПолучателя = АвтоЗначенияРеквизитов.ИННПолучателя; Документ.КПППолучателя = АвтоЗначенияРеквизитов.КПППолучателя; Документ.ОчередностьПлатежа = 6; Документ.ВидПлатежа = "Электронно"; СформироватьНазначениеПлатежа(Документ, Документ.РасшифровкаПлатежа[0]); Иначе Документ = Документы.РасходныйКассовыйОрдер.СоздатьДокумент(); Документ.Заполнить(Заявка); УправлениеДенежнымиСредствами.ЗаполнитьРеквизитыРасчетногоДокумента(Документ, глЗначениеПеременной("глТекущийПользователь"), Документ.мВалютаРегламентированногоУчета,Документ.РасшифровкаПлатежа,,Заявка); Если ЗначениеЗаполнено(СтрокаТЧ.Счет) И ТипЗнч(СтрокаТЧ.Счет) = Тип("СправочникСсылка.Кассы") Тогда Документ.Касса = СтрокаТЧ.Счет; КонецЕсли; Документ.Дата = Дата; Если Документ.РасшифровкаПлатежа.Количество()>0 Тогда Документ.РасшифровкаПлатежа[0].СуммаВзаиморасчетов = Сумма; Документ.РасшифровкаПлатежа[0].СуммаПлатежа = Сумма; КонецЕсли; Документ.СуммаДокумента = Сумма; Документ.ОтражатьВБухгалтерскомУчете = Истина; //Документ.Оплачено = Истина; //Документ.ДатаОплаты = Дата; УправлениеДенежнымиСредствами.ЗаполнитьСчетаУчетаПлатежейБУ(Документ,глЗначениеПеременной("глТекущийПользователь"),Истина); КонецЕсли; Если Заявка.Состояние<>Перечисления.СостоянияОбъектов.Утвержден Тогда //Утвердим заявки по которым сделали платеж ЗаявкаОбъект = Заявка.ПолучитьОбъект(); ЗаявкаОбъект.Состояние = Перечисления.СостоянияОбъектов.Утвержден; ЗаявкаОбъект.Записать(); КонецЕсли; Попытка Если СокрЛП(НомерПлатежки)<>"" Тогда Документ.Номер = НомерДока; КонецЕсли; Документ.Записать(); СтрокаТЧ.ПлатежноеПоручение = Документ.Ссылка; //Возврат Документ.Ссылка; Исключение //Возврат Неопределено; Сообщить("Не удалось создать документ: " + ОписаниеОшибки()); КонецПопытки; КонецПроцедуры |
|||
47
Maxus43
13.01.12
✎
12:00
|
так попробуй
Попытка Документ.УстановитьНовыйНомер(Документ.Организация.Префикс); Документ.Записать(); СтрокаТЧ.ПлатежноеПоручение = Документ.Ссылка; //Возврат Документ.Ссылка; Исключение //Возврат Неопределено; Сообщить("Не удалось создать документ: " + ОписаниеОшибки()); |
|||
48
demous
13.01.12
✎
15:22
|
спасибо, все заработало.. очень благодарен
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |