1С Предприятие 7.7(сетевая версия) - 7.70.027 Конфигурация: Производство-Услуги-Бухгалтерия для Украины(7.70.010) Подскажите, как сформировать обработку. В общем ситуация следующая: есть документы ПриходнаяНакладнаяЗапасы и ПриходнаяНакладнаяГТД, в табличной части добавился реквизит - КодДК. Этот код вводится в справочнике КодыПоКлассификатору и В приходные накладные он подставляется автоматом из справочника ТМЦ (в этом справочнике каждому тмц присвоен код ДК). Необходимо чтобы все документы с начала года заполнились этим кодом ДК. Как это сделать вообще не представляю, обработок никогда не писала. Спасибо за помощь
1С Предприятие 7.7(сетевая версия) - 7.70.027,Конф: ПУБ(7.70.010)
Процедура Выполнить() Док=СоздатьОбъект("Документ"); Док.ВыбратьДокументы(НачальнаяДата,КонечнаяДата); Пока Док.ПолучитьДокумент()=1 Цикл Если (Док.Вид() = "ПриходнаяНакладнаяЗапасы") ИЛИ (Док.Вид() = "ПриходнаяНакладнаяПрочие") ИЛИ (Док.Вид() = "ПриходнаяНакладнаяГТД") Тогда Док.ВыбратьСтроки(); Пока Док.ПолучитьСтроку() = 1 Цикл Если ПустоеЗначение(Док.КодДК) = 1 Тогда Док.КодДК=док.Номенклатура.КодДК; КонецЕсли; ГлПользователь=Автор; КонецЕсли; КонецЦикла; КонецПроцедуры
Так?
1С Предприятие 7.7(сетевая версия) - 7.70.027,Конф: ПУБ(7.70.010)
Процедура Выполнить() Док=СоздатьОбъект("Документ"); Док.ВыбратьДокументы(НачальнаяДата,КонечнаяДата); Пока Док.ПолучитьДокумент()=1 Цикл Если (Док.Вид() = "ПриходнаяНакладнаяЗапасы") ИЛИ (Док.Вид() = "ПриходнаяНакладнаяПрочие") ИЛИ (Док.Вид() = "ПриходнаяНакладнаяГТД") Тогда Док.ВыбратьСтроки(); Пока Док.ПолучитьСтроку() = 1 Цикл Если ПустоеЗначение(Док.КодДК) = 1 Тогда Док.КодДК=док.Номенклатура.КодДК; КонецЕсли; ГлПользователь=Автор; КонецЕсли; КонецЦикла; КонецПроцедуры
Так?
Похоже. Только не забудьте документ записать и провести. Помните, что после перепроведения документов могут измениться итоги по счетам и регистрам, поэтому стоит экспериментировать на копии, после чего сравнить полученные данные с рабочей базой.
А какое отношение счета имеют к кодам, они ведь не связаны? И еще вопросик, создала обработку, на форму кинула выбор даты и все, кликаю выполнить и ничего не происходит, как так?)
1С Предприятие 7.7(сетевая версия) - 7.70.027,Конф: ПУБ(7.70.010)
А какое отношение счета имеют к кодам, они ведь не связаны?
Вы будете перепроводить документы, которые формируют проводки. Проводки влияют на итоги по счетам.
Цитата(wmatik @ 08.06.11, 22:23)
И еще вопросик, создала обработку, на форму кинула выбор даты и все, кликаю выполнить и ничего не происходит, как так?)
Вы добавили в код запись и проведение документов, в которых Вы изменяете реквизит? И в кнопке, по которой Вы кликаете, в строке формула указано Выполнить()? А в конце Вашего кода перед КонецПроцедуры() добавьте строку
Предупреждение("Обработка завершена!");
для визуального обозначения завершения работы программы.
Процедура Выполнить() Док=СоздатьОбъект("Документ"); Док.ВыбратьДокументы(НачДата,КонДата); Пока Док.ПолучитьДокумент()=1 Цикл Если (Док.Вид() = "ПриходнаяНакладнаяЗапасы") ИЛИ (Док.Вид() = "ПриходнаяНакладнаяПрочие") ИЛИ (Док.Вид() = "ПриходнаяНакладнаяГТД") Тогда Док.ВыбратьСтроки(); Пока Док.ПолучитьСтроку() = 1 Цикл Если ПустоеЗначение(Док.КодДК) = 1 Тогда Док.КодДК=Док.ТМЦ.КодДК; КонецЕсли; ГлПользователь=Док.Автор; КонецЦикла; КонецЕсли; КонецЦикла; Док.Записать(); Док.Провести(); Предупреждение("Обработка завершена!"); КонецПроцедуры
1С Предприятие 7.7(сетевая версия) - 7.70.027,Конф: ПУБ(7.70.010)
Процедура Выполнить() Док=СоздатьОбъект("Документ"); Док.ВыбратьДокументы(НачДата,КонДата); Пока Док.ПолучитьДокумент()=1 Цикл Если (Док.Вид() = "ПриходнаяНакладнаяЗапасы") ИЛИ (Док.Вид() = "ПриходнаяНакладнаяПрочие") ИЛИ (Док.Вид() = "ПриходнаяНакладнаяГТД") Тогда Док.ВыбратьСтроки(); Пока Док.ПолучитьСтроку() = 1 Цикл Если ПустоеЗначение(Док.КодДК) = 1 Тогда Док.КодДК=Док.ТМЦ.КодДК; КонецЕсли; ГлПользователь=Док.Автор; КонецЦикла; Док.Записать(); Док.Провести(); КонецЕсли; КонецЦикла;
Процедура Выполнить() Док=СоздатьОбъект("Документ"); Док.ВыбратьДокументы(НачДата,КонДата); Пока Док.ПолучитьДокумент()=1 Цикл Если (Док.Вид() = "ПриходнаяНакладная") ИЛИ (Док.Вид() = "ПриходнаяНакладнаяПрочие") ИЛИ (Док.Вид() = "ПриходнаяНакладнаяГТД") Тогда Сообщить("Обрабатываю документ "+Док.ТекущийДокумент()); Док.ВыбратьСтроки(); Пока Док.ПолучитьСтроку() = 1 Цикл Сообщить("___ В строке "+Док.НомерСтроки+" КодДк="+Док.КодДК); Если ПустоеЗначение(Док.КодДК) = 1 Тогда Док.КодДК=Док.ТМЦ.КодДК; Сообщить("_________ Устанавливаем в строке "+Док.НомерСтроки+" КодДк="+Док.ТМЦ.КодДК); КонецЕсли; ГлПользователь=Док.Автор; КонецЦикла; Док.Записать(); Док.Провести(); Док.ВыбратьСтроки(); Пока Док.ПолучитьСтроку()=1 Цикл Сообщить("___ После изменения в строке "+Док.НомерСтроки+" КодДк="+Док.КодДК); КонецЦикла; КонецЕсли; КонецЦикла; Предупреждение("Обработка завершена!"); КонецПроцедуры
Извините,что вчера не ответила, инет дома отключили. Я еще добавила для вывода одно поле(ПредметЗакупки).Вот такие сообщения выводит. Проверила документы, проводит. Заполняет код и его наименование и все, больше ни на что не влият. Вы говорили что со счетами может что-то случиться, где это посмотреть?
1С Предприятие 7.7(сетевая версия) - 7.70.027,Конф: ПУБ(7.70.010)
Почти ветеран
Группа: Местный
Сообщений: 623
Из: Донецкая обл
Спасибо сказали: 171 раз
Рейтинг: 144.5
Цитата
Вы говорили что со счетами может что-то случиться, где это посмотреть?
Нужно было до обработки сформировать оборотку, и после, и сравнить. Конкретно счета какие, можете посмотреть какие проводки формирует док, соответственно на эти счета и может повлиять обработка. А вообще, если те реквизиты, что вы вставляли чисто информационные, тоесть не влияют нинакакие движения, то можно было просто записать, без Провести()
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!