Доброго времени суток. есть задача в список выбора документов Акт разногласия и Возврат от покупателя вставить колонку с флагом покрытие. есть обработка которая ставит єтот флаг для Реализации. по аналоги в список выбора Возврат от покупателя была добавлена колонка Покрытие в обработку добавлены ссылки на эти документы
Перем мИзменениеСтатусаДоступно;
Процедура КнопкаВыполнитьНажатие(Кнопка)
ОчиститьСообщения();
// Прописать в регистр владельца документов
НаборЗаписей = РегистрыСведений.ВладельцыДокументов.СоздатьНаборЗаписей();
Период = ТекущаяДата();
Длякаждого Документ Из СканированныеДокументы ЦиклЕслиНЕ Документ.Обработать Тогда
Продолжить;
КонецЕсли;
НоваяСтрока = НаборЗаписей.Добавить();
НоваяСтрока.ДокументСсылка = Документ.Документ;
НоваяСтрока.Пользователь =глЗначениеПеременной("глТекущийПользователь");
НоваяСтрока.Период = Период;
Если ТоварОтгружен = 1Тогда
Состояние = Перечисления.СостоянияРеализаций.ТоварОтгружен;
ИначеЕсли ТоварОтгружен = 2Тогда
Состояние = Перечисления.СостоянияРеализаций.ОжиданиеДозаказа;
ИначеЕсли ТоварОтгружен = 3Тогда
Состояние = Перечисления.СостоянияРеализаций.ВозвратНаСклад;
Иначе
Состояние = Перечисления.СостоянияРеализаций.Покрытие;
Состояние = Перечисления.СостоянияАктРазногласия.Покрытие;
Состояние = Перечисления.СостоянияВозвратТоваровОтПокупателя.Покрытие;
КонецЕсли;
// меняем статус документа реализацииЕсли мИзменениеСтатусаДоступно Тогда
НаборЗаписейСостоянияРеализация = РегистрыСведений.СостоянияРеализацийТоваровУслуг.СоздатьНаборЗаписей();
НаборЗаписейСостоянияАктРазногласия = РегистрыСведений.СостоянияАктРазногласия.СоздатьНаборЗаписей();
НаборЗаписейСостоянияВозвратТоваровОтПокупателя = РегистрыСведений.СостоянияВозвратТоваровОтПокупателя.СоздатьНаборЗаписей();
Отбор = НаборЗаписейСостоянияРеализация.Отбор;
Отбор = НаборЗаписейСостоянияАктРазногласия.Отбор;
Отбор = НаборЗаписейСостоянияВозвратТоваровОтПокупателя.Отбор;
Отбор.Документ.Установить(Документ.Документ);
Отбор.Состояние.Установить(Состояние);
Отбор.Период.Установить(Период);
Запись = НаборЗаписейСостоянияРеализация.Добавить();
Запись = НаборЗаписейСостоянияАктРазногласия.Добавить();
Запись = НаборЗаписейСостоянияВозвратТоваровОтПокупателя.Добавить();
Запись.Период = Период;
Запись.Пользователь =глЗначениеПеременной("глТекущийПользователь");
Запись.Документ = Документ.Документ;
Запись.Состояние = Состояние;
НаборЗаписейСостоянияРеализация.Записать(Истина);
НаборЗаписейСостоянияАктРазногласия.Записать(Истина);
НаборЗаписейСостоянияВозвратТоваровОтПокупателя.Записать(Истина);
Если ОтменитьПокрытие = ИстинаТогда
Рег = РегистрыСведений.СостоянияРеализацийТоваровУслуг;
Рег = РегистрыСведений.СостоянияАктРазногласия;
Рег = РегистрыСведений.СостоянияВозвратТоваровОтПокупателя;
Выборка = Рег.Выбрать();
Пока Выборка.Следующий() ЦиклЕсли Выборка.Документ = Документ.Документ И Выборка.Состояние = Перечисления.СостоянияРеализаций.Покрытие Тогда
Выборка.ПолучитьМенеджерЗаписи().Удалить();
КонецЕсли;
Если Выборка.Документ = Документ.Документ И Выборка.Состояние = Перечисления.СостоянияАктРазногласия.Покрытие Тогда
Выборка.ПолучитьМенеджерЗаписи().Удалить();
КонецЕсли;
Если Выборка.Документ = Документ.Документ И Выборка.Состояние = Перечисления.СостоянияВозвратТоваровОтПокупателя.Покрытие Тогда
Выборка.ПолучитьМенеджерЗаписи().Удалить();
КонецЕсли;
КонецЦикла;
Сообщить("Покрытие снято! Документ:"+Документ.Документ ,СтатусСообщения.Внимание);
Иначе
Сообщить("Покрытие установлено! Документ:"+Документ.Документ ,СтатусСообщения.Внимание);
КонецЕсли;
КонецЕсли;
КонецЦикла;
НаборЗаписей.Записать(Ложь);
КонецПроцедурыПроцедура ОбработатьСканирование(Данные)
Сообщение = СокрЛП(Данные);
ЕслиНЕ ЗначениеЗаполнено(Сообщение) ТогдаВозврат;
КонецЕсли;
Попытка
ИД = Новый УникальныйИдентификатор(Сообщение);
Исключение
Предупреждение("Ошибка считывания штрихкода. Пересканируйте последний документ.");
Возврат;
КонецПопытки;
ДляКаждого ТекСтрока Из Метаданные.Документы Цикл
СсылкаНаДокумент = Документы[ТекСтрока.Имя].ПолучитьСсылку(ИД);
Объект = СсылкаНаДокумент.ПолучитьОбъект();
Если Объект <> НеопределеноТогда
РезПоиска = СканированныеДокументы.Найти(Объект.Ссылка,"Документ");
ЕслиНЕ РезПоиска = НеопределеноТогда
НоваяСтрока = РезПоиска;
Сообщить("Документ "+Объект.Ссылка+" уже присутствует в таблице. Запись обновлена. Тек. дата/время: " + ТекущаяДата(), СтатусСообщения.Информация);
Иначе
НоваяСтрока = СканированныеДокументы.Добавить();
Сообщить("Документ "+Объект.Ссылка+" добавлен в таблицу. Тек. дата/время: " + ТекущаяДата(), СтатусСообщения.Информация);
КонецЕсли;
НоваяСтрока.Документ = Объект.Ссылка;
НоваяСтрока.Контрагент = Объект.Ссылка.Контрагент;
Если мИзменениеСтатусаДоступно ТогдаЕсли ТоварОтгружен = 1Тогда
НоваяСтрока.СостояниеДокумента = Перечисления.СостоянияРеализаций.ТоварОтгружен;
ИначеЕсли ТоварОтгружен = 2Тогда
НоваяСтрока.СостояниеДокумента = Перечисления.СостоянияРеализаций.ОжиданиеДозаказа;
ИначеЕсли ТоварОтгружен = 3Тогда
НоваяСтрока.СостояниеДокумента = Перечисления.СостоянияРеализаций.ВозвратНаСклад;
Иначе
НоваяСтрока.СостояниеДокумента = Перечисления.СостоянияРеализаций.Покрытие;
КонецЕсли;
КонецЕсли;
НоваяСтрока.Сумма = Объект.Ссылка.СуммаДокумента;
НоваяСтрока.Изменен = Объект.Ссылка.Изменен;
НоваяСтрока.Обработать = Истина;
Прервать; // УИД может принадлежать только одному объекту в базе данныхКонецЕсли;
КонецЦикла;
Если Объект = НеопределеноТогда
Сообщить("Штрихкод не может быть обработан!!!");
КонецЕсли;
КонецПроцедурыПроцедура ВнешнееСобытие(Источник, Событие, Данные)ЕслиНе ВводДоступен() ТогдаВозврат;
КонецЕсли;
//ПолучитьСерверТО().ОбработатьВнешнееСобытие(Событие, Данные, ЭтаФорма);
ОбработатьСканирование(Данные);
КонецПроцедурыПроцедура ПриОткрытии()
мИзменениеСтатусаДоступно = Истина;
ПолучитьСерверТО().ПодключитьКлиента(ЭтаФорма);
ТекПользователь = глЗначениеПеременной("глТекущийПользователь");
ДоступнаЭкспедиция = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(ТекПользователь,"ПопалВЭкспедицию");
//ДоступнаКорректровкаРевизор = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(ТекПользователь,"ОтданНаКорректировкуРевизор");//ДоступнаКорректровкаБухгалтер = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(ТекПользователь,"ОтданНаКорректировкуБухгалтер");//ДоступнаКорректровкаПродажи = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(ТекПользователь,"ОткорректированОтделПродаж");
ДоступнаПокрытие = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(ТекПользователь,"Покрытие");
СостояниеПоУмолчанию = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(ТекПользователь,"ОсновноеСостояниеРеализации");
Если СостояниеПоУмолчанию = Перечисления.СостоянияРеализаций.ТоварОтгружен Тогда
ТоварОтгружен = 1;
ИначеЕсли СостояниеПоУмолчанию = Перечисления.СостоянияРеализаций.ОжиданиеДозаказа Тогда
ТоварОтгружен = 2;
ИначеЕсли СостояниеПоУмолчанию = Перечисления.СостоянияРеализаций.ВозвратНаСклад Тогда
ТоварОтгружен = 3;
Иначе
ТоварОтгружен = 4;
КонецЕсли;
ЭлементыФормы.ТоварОтгружен.Доступность = ДоступнаЭкспедиция;
ЭлементыФормы.ОжиданеДозаказа.Доступность = ДоступнаЭкспедиция;
ЭлементыФормы.ВозвратНаСклад.Доступность = ДоступнаЭкспедиция;
ЭлементыФормы.Покрытие.Доступность = ДоступнаПокрытие;
ЕслиНе ДоступнаЭкспедиция ИНе ДоступнаПокрытие Тогда
Сообщить("У Вас нет прав устанавливать статус документа. Если Вам необходимы такие правта, то обратитесь к программисту!!!");
ЭтаФорма.Закрыть();
КонецЕсли;
КонецПроцедурыФункция ПоддерживаетсяВидТО(Вид)Экспорт
Результат = Ложь;
Если Вид = Перечисления.ВидыТорговогоОборудования.СканерШтрихКода Тогда
Результат = Истина;
КонецЕсли;
Возврат Результат;
КонецФункции// ПоддерживаетсяВидТО()Функция СШКНеизвестныйКод(Штрихкод, ТипКода, СШК)ЭкспортВозвратЛожь;
КонецФункции// СШКНеизвестныйКод()// Процедура осуществляет обработку ошибки, произошедшей при работе со сканером// штрихкода.//// Параметры:// Ошибка - <ПеречислениеСсылка.ТООшибки*>// - Возникшая ошибка.//// Штрихкод - <Строка>// - Считанный штрихкод или пустая строка, если штрихкод не был// считан.//// ТипШК - <ПланыВидовХарактеристикСсылка.ТипыШтрихкодов>// - Тип штрихкода или пустая ссылка в случае, если тип не определён.//// СШК - <Строка>// - Идентификатор сканера штрихкода, с которым связано данное// событие.//Процедура СШКОшибка(Ошибка, Штрихкод, ТипШК, СШК)Экспорт
Текст = ПолучитьСерверТО().ПолучитьТекстОшибкиСШКТО(Ошибка, Штрихкод, ТипШК);
Предупреждение(Текст);
КонецПроцедуры// СШКОшибка()Процедура ДобавитьНажатие(Элемент)
ОбработатьСканирование(Штрихкод);
КонецПроцедурыПроцедура СканированныеДокументыПередНачаломДобавления(Элемент, Отказ, Копирование)//Отказ = Истина;КонецПроцедурыПроцедура СканированныеДокументыДокументПриИзменении(Элемент)
ТекСтрока = ЭлементыФормы.СканированныеДокументы.ТекущиеДанные;
ТекСтрока.Контрагент = ТекСтрока.Документ.Контрагент;
ТекСтрока.Сумма = ТекСтрока.Документ.СуммаДокумента;
// Вставить содержимое обработчика.КонецПроцедурыПроцедура ДействияФормыОчиститьТаблицу(Кнопка)
СканированныеДокументы.Очистить();
КонецПроцедуры
при попытке запустить обработку выдает
Цитата
Обработка.СчитываниеШтрихкода.Форма.Форма(50)}: Ошибка при вызове метода контекста (Записать) НаборЗаписейСостоянияРеализация.Записать(Истина); по причине: Запись не верна! Период не может быть пустым!: СостоянияРеализацийТоваровУслуг: 01.01.0001 00:00:00, , (Регистр сведений: Состояния реализаций товаров услуг; Номер строки: 1)
Как это вылечить ?
Обработку писал не я, досталась в наследство от програмера он уволился и контакта с ним нет.
У нас здесь своя атмосфера...
Группа: Основатель
Сообщений: 14052
Из: Киев
Спасибо сказали: 4613 раз
Рейтинг: 3750.1
sia_1980, так можно в конце то концов описать проблему внятно? Проблема в том, что ругается где-то или в том, что не работает как вы хотите или сейчас выяснится что проблема вообще в чем-то другом?
sia_1980, так можно в конце то концов описать проблему внятно? Проблема в том, что ругается где-то или в том, что не работает как вы хотите или сейчас выяснится что проблема вообще в чем-то другом?
обработка ставит флаг Покрытие на документ Реализация товаров что отображается в форме списка в виде флажка, нужно добавить флаг Покрытия в Документы Акт Разногласия и Возврат товаров от покупателя, чтоб тоже отображался в форме списка флажок. при добавлении в эту обработку Ссылок на данные документы она не работает.
У нас здесь своя атмосфера...
Группа: Основатель
Сообщений: 14052
Из: Киев
Спасибо сказали: 4613 раз
Рейтинг: 3750.1
sia_1980, а теперь расскажите что вы сделали для того, чтобы флажок там появился? Если вы вообще не знаете даже с какой стороны подходить - то тут могу посоветовать только обратиться к специалистам. Если знаете - задавайте более конкретные вопросы, а то, как я уже говорил, гадалки в отпусках.
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!