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