Конфигурация 1С состоит из объектов: Константы, Документы, Регистры и ряда других. У каждого есть свои реквизиты: дата, номер, сумма и т. д. При обращении к переменной, которая не является объектом, либо при обращении к неверному типу объекта будет выходить оповещение, что Значение не является значением объектного типа.
Причины
- Основная — неверное обращение к объекту конфигурации.
- Дополнительная — обновление релиза или платформы и сохраненные настройки пользователя.
Неверное обращение к объекту
Чаще всего ошибка возникает после обновления, и если она проявилась сразу после обновления конфигурации на новый релиз, необходимо проверить ошибку в каталоге Публикации ошибок, указав полный текст ошибки.
Возможно, она уже исправлена
либо есть вариант обхода ошибки до исправления в последующем обновлении.
Если отобрать все ошибки, зарегистрированные на сайте разработчика с текстом Значение не является значением объектного типа, видно, что это достаточно часто возникающая ошибка при доработке конфигурации.
Рассмотрим на примерах почему возникают подобные ошибки.
Создадим запрос по регистру накопления Взаиморасчеты с сотрудниками с некоторыми полями из него.
В запросе в поле Физическое лицо указали реквизит Код, обозначив при этом в представлении, что это данные по физическому лицу. Далее, выгрузив запрос в таблицу значений, обработаем полученные данные, при этом попытаемся сообщить, какое физическое лицо в данный момент обрабатывается.
В результате выполнения цикла получим ошибку Значение не является значением объектного типа (Наименование).
Окно сообщения говорит о том, что происходит попытка получить значения, которых нет в объекте. В данном примере из информации о коде пытаемся получить наименование физического лица. Корректнее было бы в запросе получать данные о физическом лице и дополнительно о наименовании физического лица, а в цикле — получать это поле.
Следующий пример ошибки — обратимся к функции и передадим в нее параметры несоответствующего типа. У функции ОбработатьДанные два параметра: Объект и ФизическоеЛицо. Вместо передачи элемента типа справочник Физические лица передан параметр Ложь.
При выполнении кода будет выдана ошибка.
Происходит это из-за того, что функция пытается получить данные ИНН из типа данных Булево. Для исправления достаточно правильно передать параметр.
Также часто встречается ошибка, когда при написании кода в каком-то условии элементу присваивается неопределtнное значение, а в дальнейшем идет обращение как к объекту, без учета ранее сделанных изменений.
В данном примере необходимо либо добавлять проверку при получении даты для _Объект на значение Неопределено, либо изменить условие, которое приводит к ошибке.
Сохраненные настройки пользователя
Ошибка Значение не является значением объектного типа может возникать после обновления из-за несоответствия настроек пользователя и настроек, предусмотренных изменениями конфигурации. Например, у части пользователей все работает в штатном режиме, а у других — перестали открываться списки документов или не формируются отчеты, которые до обновления работали без нареканий.
Скорее всего, в следующем обновлении разработчики устранят данную проблему, а пока можно попробовать очистить настройки конкретного пользователя. Для начала следует сделать архив базы. Далее в развернутой копии выполнить следующие действия:
- зайти в раздел Администрирование;
- открыть в панели действий пункт Настройки пользователей;
- выбрав нужного пользователя, очистить его настройки.
Сначала можно попробовать очистить не все настройки, а только настройку того элемента, при работе с которым возникла ошибка. Например, при работе с должностями возникла ошибка, поэтому необходимо попробовать по правой кнопке мыши очистить настройки именно справочника Должности.
В случае возникновения ошибки при работе с отчетами также не следует удалять все настройки, а начать со страницы Настройки отчетов. Если очистка конкретного отчета не помогла, то выбрать пункт Очистить все — Настройки отчетов и внешнего вида.
См. также:
- Исправление технических ошибок при работе с 1С:Бухгалтерия
- Не запускается 1С
- Идентификация пользователя не выполнена
- Несоответствие типов
- Итератор для значения не определен
- Неоднозначное поле в запросе
Если Вы еще не подписаны:
Активировать демо-доступ бесплатно →
или
Оформить подписку на Рубрикатор →
После оформления подписки вам станут доступны все материалы по 1С:Бухгалтерия, записи поддерживающих эфиров и вы сможете задавать любые вопросы по 1С.
Подписывайтесь на наши YouTube и Telegram чтобы не пропустить
важные изменения 1С и законодательства
Помогла статья?
Получите еще секретный бонус и полный доступ к справочной системе БухЭксперт8 на 14 дней бесплатно
Значение не является значением объектного типа 1С
Конфигурация программы 1С предприятие состоит из объектов: Константы, Документы, Регистры и ряда других. У каждого есть свои реквизиты: дата, номер, сумма и т. д. При обращении к переменной, которая не является объектом, либо при обращении к неверному типу объекта будет выходить оповещение, что Значение не является значением объектного типа.
Причины
- Основная — неверное обращение в программе к объекту конфигурации.
- Дополнительная — обновление релиза или платформы и сохраненные настройки пользователя.
Неверное обращение к объекту
Чаще всего ошибка по этой теме возникает после обновления, и если она проявилась сразу после обновления конфигурации на новый релиз, необходимо проверить ошибку в каталоге Публикации ошибок, указав полный текст ошибки.
Возможно, она уже исправлена на сайте и вопрос исчерпан
либо есть вариант обхода ошибки до исправления вопроса в последующем обновлении.
Если отобрать все ошибки, зарегистрированные на сайте разработчика с текстом Значение не является значением объектного типа, видно, что это достаточно часто возникающая ошибка при доработке конфигурации, поэтому у пользователей возникает много подобных вопросов.
Рассмотрим на примерах почему возникают подобные ошибки.
Создадим запрос по регистру накопления Взаиморасчеты с сотрудниками с некоторыми полями из него.
В запросе в поле Физическое лицо указали реквизит Код, обозначив при этом в представлении, что это данные по физическому лицу в 1С Предприятие. Далее, выгрузив запрос в таблицу значений, обработаем полученные данные, при этом попытаемся сообщить, какое физическое лицо в данный момент обрабатывается.
В результате обработки цикла получим новую ошибку Значение не является значением объектного типа (Наименование).
Окно сообщения говорит о том, что происходит попытка получить обработку значения, которых нет в объекте. В данном примере из информации о коде пытаемся получить наименование физического лица. Корректнее было бы в запросе получать данные о физическом лице и дополнительно о наименовании физического лица, а в цикле — получать это поле.
Следующий пример ошибки — обратимся к функции и передадим в нее параметры несоответствующего типа. У функции ОбработатьДанные два параметра: Объект и ФизическоеЛицо. Вместо передачи элемента типа справочник Физические лица задать параметр Ложь.
При выполнении кода будет выдана ошибка.
Происходит это из-за того, что функция пытается получить данные ИНН из типа данных Булево. Для исправления достаточно правильно передать параметр.
Также часто встречается ошибка, когда при написании кода в каком-то условии элементу присваивается неопределtнное значение, а в дальнейшем идет обращение как к объекту, без учета ранее сделанных изменений.
В данном примере необходимо либо добавлять проверку при получении даты для _Объект на значение Неопределено, либо изменить и установить условие, которое приводит к ошибке.
Сохраненные настройки пользователя
Ошибка Значение не является значением объектного типа может возникать после обновления из-за несоответствия настроек пользователя и настроек, предусмотренных изменениями конфигурации. Например, у части пользователей все работает в штатном режиме, а у других — перестали открываться списки документов или не формируются отчеты, которые до обновления работали без нареканий.
Скорее всего, в следующем обновлении разработчики устранят данную проблему, а пока можно попробовать очистить настройки конкретного пользователя. Для начала следует сделать архив базы. Далее в развернутой копии выполнить следующие действия:
- зайти в раздел Администрирование;
- открыть в панели действий пункт Настройки пользователей;
- выбрав нужного пользователя, очистить его настройки.
Сначала можно попробовать очистить не все настройки, а только настройку того элемента, при работе с которым возникла ошибка. Например, при работе с должностями возникла ошибка, поэтому необходимо попробовать по правой кнопке мыши очистить настройки именно справочника строка Должности.
В случае возникновения ошибки при работе с отчетами также не следует удалять все настройки, а начать со страницы Настройки отчетов. Если очистка конкретного отчета не помогла и вы не нашли ответ на свой вопрос, то выбрать пункт Очистить все — Настройки отчетов и внешнего вида. Надеемся, данная статья была полезна для вас.
Заказать консультацию
По этой или иной ошибке Вы можете обратиться к нашим специалистам, мы Вам поможем решить Вашу проблему.
Довольно часто начинающие 1С разработчики сталкиваются с ошибками, которых достаточно легко избежать. Ниже мы рассмотрим топ 11 ошибок и способы их исправления. Также доступна видеоверсия статьи
Содержание
Поле объекта не обнаружено
Существует множество статей, которые описывают возможные причины возникновения в 1С ошибки “Поле объекта не обнаружено”. Порой это связывают с обновлением платформы, обновлением типового релиза, или с какими-то другими причинами.
Мы же будем оперировать фактами. В конце статьи прилагается внешняя обработка, в которой воспроизведена данная ошибка.
Такое сообщение платформа выдает, когда пытается обратиться к свойству объекта языка, которого у данного объекта нет. Не важно, что это за объект – документ, справочник, таблица значений , или сообщение пользователю.
- Удалили табличную часть, к которой обращаемся в коде?
- Переименовали реквизит, а в коде не исправили?
- Заменили значение со ссылки на неопределено?
Вуаля – платформа выдаст ошибку “Поле объекта не обнаружено”!
Как исправить? Исходя из природы ошибки – переименовать реквизит на нужное имя, отредактировать код, или использовать правильные обращения к стандартным свойствам объекта.
Например, у объекта “СообщениеПользователю” нет свойства “Таблица”, и следующий код приведет к ошибке:
Сообщение = Новый СообщениеПользователю;
Сообщение.Таблица = “Ошибка”;
Индекс находится за границами массива
Что означает такое сообщение системы? Как правило, с данной ошибкой разработчик сталкивается при некорректной работе с коллекциями. Самые частые случаи появления ошибки “Индекс находится за границами массива”.
- Использование при обходе коллекции количества элементов вместо индекса. Индексы начинаются с нуля, а количество элементов – с единицы. Поэтому следующий код гарантированно приведет к ошибке: Массив[Массив.Количество()]
- Последствия удаления элементов из коллекции, очистки коллекции или замены коллекции на пустую
- Ошибочное увеличение счетчика в цикле “Для”
Как исправить? Для удаления элементов из коллекции по условию – использовать обратный цикл. Добавлять условие на соответствие счетчика цикла и индекса массива. Не увеличивать счетчик внутри кода цикла Для … Цикл … КонецЦикла
Обращение к процедуре как к функции
Суть этой ошибки в том, что процедура не может возвращать значение. И если мы в коде используем вызов процедуры справа от знака присваивания, это приведет к ошибке.
Данная ошибка имеет две вариации – если используется стандартная процедура из методов какого-нибудь объекта, то фраза будет звучать “Обращение к процедуре объекта как к функции”. Если же использовать процедуру, объявленную в коде, то текст ошибки будет “Обращение к процедуре как к функции”.
При этом ошибка использования процедуры объекта является ошибкой времени выполнения – т.е. на этапе сохранения и проверки конфигурации платформа эту ошибку не обнаружит.
А вот неправильное использование процедуры синтаксическая проверка (Ctrl + F7) успешно обнаруживает, и не даст сохранить конфигурацию или внешнюю обработку/отчет, пока ошибка не будет устранена.
Рассмотрим два примера:
1. Воспроизведем ошибку “Обращение к процедуре как к функции”. При этом платформа не даст сохранить изменения, т.к. не проходит синтакс-контроль.
2. Воспроизведем ошибку “Обращение к процедуре объекта как к функции”. Здесь мы неверно используем метод объекта массива “Добавить”, который является процедурой.
Как исправить? Ошибка тривиальная, и исправление тоже. Чаще всего, достаточно внимательно прочитать описание методов объекта во встроенной справке или синтакс-помощнике. Если метод является процедурой, то значений он возвращать не может. Следовательно, нужно модифицировать код так, чтобы такого ошибочного вызова не было.
Если же используется процедура, объявленная в коде, возможно, есть необходимость изменить ее на функцию, либо также скорректировать код, который эту процедуру использует.
Процедура не может возвращать значение
Родственная предыдущей ошибка. Для того, чтобы код возвращал какое-то значение, следует этот код размещать в функции, а не в процедуре.
В процедуре можно написать ключевое слово “Возврат” без параметров. Это будет означать выход из процедуры.
Следующий код является ошибочным, т.к. в теле процедуры Возврат используется с параметром:
Процедура ПроцедураНеМожетВозвращатьЗначение(Команда) Возврат "Ошибка"; КонецПроцедуры
Как исправить? Платформа сама подсказывает, в каком месте кода ошибка. Нужно изменить текст модуля – либо удалить параметр у ключевого слова Возврат, либо убрать его вовсе, либо изменить процедуру на функцию – зависит от того, какая логика у вашей процедуры, и как вы предполагаете ее использовать.
Переменная не определена
Такой текст ошибки платформа 1С выдает на этапе синтаксического контроля, при сохранении конфигурации, внешнего отчета или обработки.
Причин у этой ошибки может быть несколько.
- Опечатка в имени переменной
- Обращение к переменной, которая нигде в области видимости не объявлена (неявной инициализацией с присвоением значения, явным образом с использованием ключевого слова “Перем”, или передана в качестве параметра)
- Написание на клиенте серверного кода. Например, обращение к менеджеру справочников “Справочники”, и т.п. Клиентская часть приложения “не видит ” серверные объекты языка
- Также ошибка может появиться, если ранее код использовался в режиме толстого клиента, но после был запущен в тонком клиенте.
Как исправить?
Внимательно следить за правильностью набранного кода, своевременно объявлять переменные или передавать их в качестве параметров. Писать серверный код только в серверных модулях, а также использовать соответствующие инструкции препроцессора, например “&НаСервере”.
Значение не является значением объектного типа
Ошибка “Значение не является значением объектного типа” может возникнуть при неверном обращении к объекту языка. Объектный тип – это такие объекты языка, которые содержат в себе другие объекты – свойства, реквизиты и т.п. Эти свойства доступны через точку, например “Объект.СвойствоЭтогоОбъекта”
Но если через точку попытаться использовать какое-то значение, которое внутри себя свойств не имеет – например, любое значение примитивного типа – это и приведет к ошибке.
Разберем более сложный пример:
&НаСервере Процедура ЗначениеНеЯвляетсяЗначениемОбъектногоТипаНаСервере(Справочники = Ложь) Сообщить(Справочники.Сотрудники.ПустаяСсылка()); КонецПроцедуры
Ошибка может быть “плавающей”. Если вместо параметра по умолчанию “Справочники = Ложь” будет передан менеджер справочников, то ошибки возникать не будет. А если вызвать процедуру без параметров, то будет использоваться параметр по умолчанию с типом Булево, что и приведет к ошибке.
Чаще всего чтобы исправить ошибку, нужно в отладчике посмотреть, какой тип значения используется. Можно внести изменения в код, чтобы обеспечить корректное поведение (например, в запросе вместо наименования товара выбрать ссылку, и в коде через точку уже обращаться к свойствам ссылки, а не текстового наименования). А можно добавить проверку на нужный тип значения. Т.е. – если значение того типа, который мы ожидаем – выполняем код. Иначе – не выполняем.
Ошибка при вызове метода контекста
В языке 1С у разных объектов (запросов, справочников, табличных документов и др.) есть предопределенные методы, предусмотренные платформой. Обращение к этим методам требует соблюдения порядка и параметров, правильного синтаксиса и соблюдения условий использования. Например, при чтении табличного документа из файла он не должен быть открыт в другой программе, при подключении к http-соединению оно должно быть доступно, и т.п.
Если эти условия не соблюдать, платформа в зависимости от версии может выдавать сообщения вида “Ошибка при вызове метода контекста”, и далее будут следовать более подробные сведения об ошибке – стек вызовов, приведших к ошибке, номер строки и позиции в строке, где произошла ошибка.
Чаще всего ошибка при вызове метода контекста встречается в следующих методах:
- Записать
- Прочитать
- Выполнить
- Создать
- ПроверитьВывод
Разберем эту ошибку на примере метода Выполнить объекта Запрос:
Запрос = Новый Запрос("ВЫБРАТЬ ПЕРВЫЕ 1 1 ГДЕ ИСТИНА И"); Запрос.Выполнить();
В тексте запроса допущена ошибка – после первого условия “ГДЕ ИСТИНА” указан оператор И, но после него нет еще одного условия. В результате при попытке выполнения запроса, платформа вернет ошибку.
Для исправления ошибки зачастую достаточно внимательно использовать методы, при необходимости уточнять порядок, количество и тип параметров – это можно сделать в справке или синтакс-помощнике (встать курсором на имя метода в коде, и нажать сочетание клавиш Ctrl+F1). В случае запроса – нужно передавать синтаксически корректный текст запроса; в случае проверки вывода на печать – в системе должен быть установлен принтер; в случае подключения к почте – должны быть корректно указаны логин и пароль, и т.п.
Тип не может быть выбран в запросе в 1С 8.3 (8.2)
С такой ошибкой начинающие разработчики (да и не только начинающие 😉 ) сталкиваются чаще всего, при чтении запросом данных из таблиц значений, либо из регистров сведений. Все дело в том, что запросы поддерживают далеко не все типы значений. Так, например, нельзя запросом выбрать тип Картинка, ХранилищеЗначений, Шрифт, и многие другие типы, которые не относятся к примитивным или ссылочным типам значений.
Так, если ресурс регистра сведений имеет тип ХранилищеЗначений, выбрать его запросом будет нельзя. Также, если в таблицу значений поместить значения не подходящих типов, а после передать эту таблицу в качестве параметра-источника данных, выполнение запроса также приведет к ошибке “Тип не может быть выбран в запросе”.
Еще одна ситуация, когда запрос будет выдавать ошибку – если таблица значений, которая передается в качестве параметра, имеет не типизированные колонки.
Неверно:
//ТЗОшибочныйТип.Колонки.Добавить("Контрагент");
Верно:
//ТЗОшибочныйТип.Колонки.Добавить("Контрагент", Новый ОписаниеТипов("СправочникСсылка.Контрагенты"));
Для исправления ошибки нужно правильным образом инициализировать колонки таблицы значений, а также не обращаться в запросе к полям, типы которых запросами не поддерживаются.
Использование в 1С модальных окон в данном режиме запрещено
Платформа будет выдавать такое сообщение, если в коде используются методы, приводящие к открытию модальных окон. Модальные окна – это окна, которые при открытии блокируют весь остальной интерфейс. В 1С есть несколько модальных методов – например – “Вопрос”, “ОткрытьЗначение”, “Предупреждение”. Кроме того, в коде может использоваться модальный синтаксис открытия форм: “ОткрытьМодально()”
Если в свойствах конфигурации выбран режим использования модальности “Не использовать”, то выполнение модальных методов будет приводить к этой ошибке “Использование в 1С модальных окон в данном режиме запрещено”.
Для устранения ошибки можно пойти несколькими путями. Как водится, один – быстрый, другой – правильный 🙂
Быстрый способ – переключить режим использования модальности в положение “Использовать”.
Более правильный способ – использовать в коде немодальные вызовы методов. Например, у метода “Вопрос” есть немодальный аналог – “ПоказатьВопрос”, у метода “Предупреждение” – “ПоказатьПредупреждение”, и т.п. Чаще всего об этих методах дополнительно указано в синтакс-помощнике и справке.
Кроме того, в последних версиях платформы появились асинхронные методы – “ВопросАсинх”, “ПредупреждениеАсинх” и др. Появление этих методов позволяет писать более простой и понятный асинхронный код, и направлено в первую очередь, на более полноценную поддержку браузерами и работу в веб-клиенте.
1С 8.3 и 8.2: Запись с такими ключевыми полями существует!
Данная ошибка появляется при некорректной записи в регистр сведений. Чаще всего с этой ошибкой сталкиваются начинающие разработчики, не до конца понимающие механизмы работы с ключевыми полями (измерениями).
Суть ошибки следующая – регистр сведений позволяет записать запись (строку таблицы) с уникальным набором ключевых полей – а для периодических регистров также и поля Период. Если следующая запись полностью повторяет значение ключевых полей, но осуществляется методом Записать с параметром Замещать = Истина, то запись в таблице регистра просто заменится на идентичную.
Однако если поместить две абсолютно одинаковые записи в набор записей, и попытаться его записать – платформа выдаст ошибку. Еще один распространенный случай, когда 1С сообщает “Запись с такими ключевыми полями существует” – это запись в периодический регистр сведений с периодичностью от “День” и выше, подчиненный регистратору.
В типовых конфигурациях часто эту ошибку можно воспроизвести, если в пользовательском режиме создать два документа “Установка цен номенклатуры” с одной и той же номенклатурой и за один и тот же день. Попытка провести второй документ приведет к ошибке.
В случае, когда ошибка возникает не в результате действий пользователя, а при выполнении кода, чтобы устранить ее, чаще всего необходимо проанализировать алгоритм записи в регистр. Если запись осуществляется одним набором данных, его предварительно нужно свернуть до уникальных записей. Например, выгрузить в таблицу значений, свернуть, и загрузить в набор записей.
Поле объекта недоступно для записи в 1С
Чаще всего начинающие программисты 1С сталкиваются с этой ошибкой в двух ситуациях.
Первый случай – это попытка редактирования системных полей, недоступных для записи. Например, в модуле формы сама форма будет содержаться в объекте ЭтаФорма. И попытка присвоить этому реквизиту любое значение приведет к ошибке “Поле объекта недоступно для записи”.
Второй случай – и с ним новички как раз допускают больше всего ошибок – это попытка редактирования полей ссылки, а не самого объекта. Чаще всего код выглядит примерно так:
Элемент = Справочники.Сотрудники.НайтиПоКоду("12345"); Элемент.Наименование = "Новое наименование";
Исполнение данного кода приведет к ошибке, т.к. поля ссылки доступны только для чтения, а метод НайтиПоКоду вернет именно ссылку. Чтобы можно было внести изменения, следует из ссылки получить сам объект – используя соответствующий метод ПолучитьОбъект().
Для исправления ошибки зачастую достаточно получить объект из ссылки. В случае же попытки редактирования свойств, доступных только на чтение самый правильный подход – анализировать имеющуюся документацию по этим свойствам, и не пытаться присваивать им значения, если платформа этого не предусматривает.
Ссылка на обработку
По ссылке вы можете скачать внешнюю обработку, в которой воспроизводится большая часть ошибок, описанных в статье. Для воспроизведения части ошибок нужно будет убрать комментарии в коде.
Заключение
Как видите, зачастую ошибки тривиальны, и достаточно просто исправляются. Общие рекомендации – внимательно читать документацию и справку, корректно использовать методы, активно пользоваться отладчиком. Если вы новичок, и хотите освоить программирование в 1С с нуля – могу предложить приобрести мой базовый курс для начинающих. Более подробная информация – по ссылке.
Программное обеспечение 1С:Предприятия значительно упрощает работу разного рода предприятий в оформлении и создании цифровых документов. Внутри продукта реализован специальный язык конфигурирования документов. С его помощью пользователи могут создавать базы данных, торговые формы и другие программные модули. Особенностью языка является команды и операторы на русском языке. При создании документов многие сталкиваются с ошибкой — «Значение не является значением объектного типа (Имя)». В этой статье мы определим её причину и научимся устранять этот сбой.
Содержание
- Причина ошибки объектного типа в 1С
- Чистим кэш в программе 1С:Предприятие
- Тестирование базы 1С.Предприятие в версии 8.3
- Устраняем ошибку при формировании отчета
Причина ошибки объектного типа в 1С
Распространенными версиями программы на сегодняшний день являются 1С:Предприятия 8.2, 8.3. Именно в них, по словам пользователей, появляется ошибка с типами объектов. Во всех случаях причиной является недостаточный опыт того, кто пытается написать программу. Другими словами — ошибку вызывает неверно написанный код. Но в некоторых случаях проблема может появляться по другим причинам. Рассмотрим всевозможные варианты устранения ошибки в 1С:Предприятия.
Полезно знать: ошибка в 1С 7.7 «Порядок сортировки, установленный для баз данных, отличается от системного.
Чистим кэш в программе 1С:Предприятие
Чтобы не терять времени и не отслеживать неточности в самом коде, попробуем воспользоваться стандартными методами устранения ошибок в 1С. Для начала очистим кэш, который часто препятствует нормальному функционированию программы. И в то же время в нём находится достаточно много полезных для ПО файлов, таких как настройка окон, установленные цвета, настройка шрифтов, профили и многое другое.
Если в кэш будет внесено какое-нибудь неверное значение, то чтобы его изменить, нужно только удалить существующее. Данные в этом контейнере также могут прийти в негодность по некоторым другим причинам. Например, при внезапном отключении питания компьютера во время работы с программой. Ошибки также могут вызывать неполадки с жестким диском компьютера. Итак, чтобы найти папки кэша, нужно открыть следующие директории:
- Версия 2 — %userprofile%AppDataLocal1C1Cv82; %userprofile%AppDataRoaming1C1Cv82;
- Версия 8 — %userprofile%AppDataRoaming1C1Cv8; %userprofile%AppDataLocal1C1Cv8.
Их можно найти как вручную на диске, который вы указали при установке, так и при помощи окна ввода команд в Windows. Чтобы запустить и открыть временные файлы 1C:
- Нажмите две клавиши вместе WIN+R;
- Появится строка ввода внизу в левой части экрана. Скопируйте одну из строк выше и вставьте в пустое поле. Проследите, чтобы каждая команда была написана только латинскими буквами;
- Нажмите ENTER, и система покажет вам нужную папку;
- В каждой папке нужно удалить всё содержимое, затем закрыть окна и запустить программу.
Читайте также: ошибка при выполнении запроса POST к ресурсу/e1cib/logForm.
Тестирование базы 1С.Предприятие в версии 8.3
В программном продукте 1С:Предприятие 8.3 есть специальная утилита, которая позволяет проверять базу данных на ошибки и автоматически исправлять их. Удобный инструмент для всех случаев. Вам стоит знать, где она находится и как её использовать даже в том случае, если нашей беде она не поможет. Для более эффективного применения наладчика вам нужно знать его разделы. Каждый нужно использовать в определенном случае.
- Тестирование базы данных на ошибки — для устранения нашей ошибки — значение не является значением объектного типа 1С — этот пункт необходимо использовать в первую очередь. Он позволяет определять и устранять ошибки при создании новых объектов и таблиц соответствий базы;
- Проверка ссылок базы данных — этот модуль нужно использовать при частых ошибках «Объект не найден». Он проверяет правильность пути к объекту и исправляет его в случае надобности. Модуль можно настроить, выбирая параметры: «Не изменять», «Создавать объекты», «Удалять» и так далее;
- Переоформление таблиц БД — при запуске этого пункт, делается копия базы данных и заново создаются таблицы с данными. Процесс занимает длительно время;
- Переиндексация таблиц БД — в базе данных есть основная таблица индексирования. Для более быстрой работы к основной таблице добавляются вспомогательные. В них данные сортируются по определенным параметрам, которые заданы в основной таблице. Утилита сканирует данные индексного файла и таблиц на ошибки;
- Сжатие данных в БД — когда вы удаляете какой-нибудь объект из таблицы или в конфигурации, он исчезает только визуально. Удаленные объекты остаются в БД, хотя и не отображаются нигде. Чтобы уменьшить объем всего документа, рекомендуется перед сохранением использовать этот модуль;
- Проверка актуальных данных — чтобы быстро отображать расчеты БД, в 1С есть специальный файл, в котором программа уже произвела необходимые расчеты для отображения итогового результата. Если с данным файлом пользователь нашел несоответствия или искаженные данные, нужно запустить этот пункт для проверки.
Эти разделы утилиты позволят вам исправить многие ошибки, которые встречаются при работе в 1С:Предприятия. Запустить их очень просто:
- Откройте программу;
- Выберите на панели инструментов вкладку «Администрирование»;
- Выберите из списка пункт «Тестирование и исправление»;
Выберите пункт «Тестирование и исправление» - Определитесь с разделом и запустите сканирование.
Устраняем ошибку при формировании отчета
Если вы пытаетесь сформировать отчет в программе 1С:Предприятия, но в процессе появляется ошибка с неверным значением объектного типа, то устранить её можно следующем путём:
- В стандартных конфигурациях управляемых форм существует настройка, которая выводит подразделения разделов по иерархии. Чтобы активировать её, необходимо открыть пункт «Настройки». Найти его можно вверху на панели инструментов;
- Среди перечня настроек в первом столбце выберите пункт «Дополнительные настройки»;
- Найдите пункт «Выводить полную иерархию…» и поставьте на нём галочку;
- Просмотрите другие пункты настроек, возможно, они смогут пригодиться;
- Сохраните созданные настройки программы.
Необходимо знать, что каждое значение переменной должно иметь свои реквизиты. Если оставить одну из значений переменных без параметра, программа будет выдавать ошибку. Сбой возникает по той причине, что в каком-то участке кода подобный объект содержит значение, в котором нет никаких полей. Иначе говоря, оно не определено. Когда этот код будет запущен, обработчик попытается прочитать переменную и выдаст ошибку о неверном типе данных.
При обсуждении этой ошибки на тематических форумах, пользователь, который задает свой вопрос, чаще всего сам находит неточности и решает проблему. Поэтому проверьте несколько раз свой код на наличие ошибок. Если вы не смогли отыскать её, обратитесь на один из форумов, где есть разделы по теме 1С:Предприятие. Задайте вопрос и выложите код, который не удается наладить самостоятельно. На таких ресурсах пребывает достаточно много специалистов. Помогая другим устранять ошибки в данном продукте, они оттачивают своё умение. Поэтому они с радостью помогут вам найти огрехи.
Если вам вдруг не помогли инструкции из этой статьи, то в интернете есть специальные программы и онлайн-сервисы, которые отслеживают ошибки программы. Вы можете самостоятельно найти их через поисковые системы. За символическую плату можно связаться со специалистом по телефону или Skype, чтобы он помог вам устранить ошибку — значение не является значением объектного типа 1С.
после загрузки справочника выдает ошибку. Значение не является значением объектного типа |
Я |
17.09.15 — 16:57
Помогите кто-нибудь, заливала как обычно новый список номенклатуры из эксель с помощью обработки «загрузка данных из табличной части». Раньше уже заливала товары, сейчас залила услуги. Причем когда заливала сначала поставила вид номенклатуры товары, потом поменяла на услуги и еще раз перезалила, номенклатура изменилась на услуги.
Но теперь глючит в заказе покупателя, при выборе подбором услуг, даже старых, вылезает вот такая штука
Значение не является значением объектного типа ( Вид номенклатуры)
Подробнее
{Документ.ЗаказПокупателя.Форма.ФормаДокумента.Форма(934)}: Значение не является значением объектного типа (ВидНоменклатуры)
СтрокаТабличнойЧасти.ВидНоменклатуры = СтрокаТабличнойЧасти.Номенклатура.ВидНоменклатуры;
Причем несмотря что в номенклатуре стоит услуга, а не товар, я могу эту услугу поставить в заказе покупателя в колонку товаров
что делать?(((((((
1 — 17.09.15 — 17:00
начнем с названия конфигурации и её версии
2 — 17.09.15 — 17:02
Извияюсь,
1с 8.2
УТ 10.3
3 — 17.09.15 — 17:02
не, ну ты посмотри на угодника, с прелюдий начинает
4 — 17.09.15 — 17:07
также загружала единицы товара и цены
настройки загрузок могу скинуть, они у меня сохранены
5 — 17.09.15 — 17:08
галка услуга стоит у этой номенклатуры?
6 — 17.09.15 — 17:12
(5) галка — вы имеете ввиду выбрано ли в самой номенклатуре что это услуга, а не товар? — да, вид номенклатуры стоит «услуга»
7 — 17.09.15 — 17:20
(6) реквизит такой справочника номенклатура, называется «услуга»
8 — 17.09.15 — 17:36
(7) в самом справочнике? не очень понимаю где можно галочку поставить, везде выбор из списка: товар, услуга или набор-комплект
9 — 17.09.15 — 17:46
думаю ошибка тут : СтрокаТабличнойЧасти.ВидНоменклатуры
а не справа
10 — 17.09.15 — 17:48
+(9) в СтрокаТабличнойЧасти есть колонка ВидНоменклатуры ?
11 — 17.09.15 — 17:50
(7) просто не понимаю, старые уже заведенные давно услуги при подборе в заказе покупателя тоже выдают ошибку((((( раньше никогда такого не было
12 — 17.09.15 — 17:51
(10) да, есть
13 — 17.09.15 — 17:52
(12) отладчик ошибку показывает слева или справа ?
14 — 17.09.15 — 17:53
(11) либо реквизита таб части нет…либо у справочника номенклатура…
15 — 17.09.15 — 17:53
(13) как понять?
16 — 17.09.15 — 17:56
(14) а почему он пропал? раньше же был? и где искать реквизиты? где их посмотреть?
все это произошло после того как загрузила номенклатуру 2 раза одну и туже, сначала как товары, потом как услуги и вот теперь глюк, ошибка
17 — 17.09.15 — 17:56
(15) отладчик есть ?
18 — 17.09.15 — 17:57
мне реквизиты и галочки искать в конфигурации? если да, я в конфигурацию еще не заходила
19 — 17.09.15 — 17:57
Либо вместо номенклатуры в табличной части пустое значение, либо элемент является группой
20 — 17.09.15 — 17:58
в конфигураторе пробовала: администрирование — тестирование и исправление, не помогло
21 — 17.09.15 — 17:59
(19) f gjqvtv ‘nj njkmrj d jnkflxbrt//f gjkmpjdfnmcz jnkflxbrjv//vs yt vj;tv///dct
22 — 17.09.15 — 17:59
(17) не знаю, не пользовалась, где он должен быть?где его поискать?
23 — 17.09.15 — 18:01
(19) после того как ошибку закрываешь, номенклатура добавляется в табличную часть заказа покупателя
24 — 17.09.15 — 18:03
В окне с ошибкой есть кнопка конфигуратор, в конфигураторе открывает окно Документ ЗаказПокупателя: ФормаДокумента
Перем мОповещатьВладельцаОЗакрытии Экспорт;
// Хранит последнюю установленную дату документа — для проверки перехода документа в другой период
Перем мТекущаяДатаДокумента;
// Хранит текущее значение учетной политики, организация является плательщиком ЕНВД
Перем мОрганизацияЯвляетсяПлательщикомЕНВД;
// Хранит текущее значение организации для контроля учетной политики, организация является плательщиком ЕНВД
Перем мТекущаяОрганизация;
Перем мКолонкиТовары, мКолонкиВозвратнаяТара, мИспользоватьТару, мКолонкиУслуги, мКолонкиТаблицаАвтоСкидок;
Перем мВидимостьЗакладкиУслуг;
Перем мРазрешитьНулевыеЦеныВОпте, мРазрешитьНулевыеЦеныВРознице;
// Устанавливается в значение «Истина», если пользователю можно менять цену
// в документе
Перем мМожноМенятьЦенуВДокументе;
Перем мЧас;
Перем мМинута;
Перем мОбработкаПоискаПоСтроке;
Перем мТекстПоискаПоСтроке;
Перем мПоследнееЗначениеЭлементаПоискаПоСтроке;
// Хранит суммарное количество товаров в табличной части Товары
Перем мТекущееКоличествоТоваров;
Перем мФормаСоставНабора, мТекущаяСтрокаНабор;
// Хранит дерево кнопок подменю заполнение ТЧ
Перем мКнопкиЗаполненияТЧ;
Перем мКартинкаНаборКомплект;
Перем мТерминалы;
Перем мИспользоватьВнутренниеЗаказы;
////////////////////////////////////////////////////////////////////////////////
// ПРОЦЕДУРЫ И ФУНКЦИИ ОБЩЕГО НАЗНАЧЕНИЯ
// Процедура выполняет необходимые действия при изменении дисконтной карты.
//
Процедура ПриИзмененииДисконтнойКарты()
Если ЗначениеЗаполнено(ДисконтнаяКарта) Тогда
Если ЗначениеЗаполнено(ДисконтнаяКарта.ВладелецКарты)
И ДисконтнаяКарта.ВладелецКарты <> Контрагент Тогда
Если НЕ ЗначениеЗаполнено(Контрагент) Тогда
Ответ = КодВозвратаДиалога.Да;
Иначе
Ответ = Вопрос(«У выбранной дисконтной карты владелец » + СокрЛП(ДисконтнаяКарта.ВладелецКарты) + «.»
+ Символы.ПС + «Изменить контрагента в документе?», РежимДиалогаВопрос.ДаНет);
КонецЕсли;
Если Ответ = КодВозвратаДиалога.Да Тогда
Контрагент = ДисконтнаяКарта.ВладелецКарты;
ПриИзмененииКонтрагента();
ПриИнтерактивномИзмененииДоговора();
КонецЕсли;
КонецЕсли;
КонецЕсли;
ПересчитатьАвтоматическиеСкидки();
КонецПроцедуры //ПриИзмененииДисконтнойКарты()
// Процедура выполняет необходимые действия при изменении номенклатуры в ТЧ «Товары».
//
// Параметры:
// Элемент — ЭУ, для которого вызван обработчик.
//
Процедура ПриИзмененииНоменклатурыТовары(Элемент)
СтрокаТабличнойЧасти = ЭлементыФормы.Товары.ТекущиеДанные;
ПриИзмененииНоменклатурыТоваров(СтрокаТабличнойЧасти);
ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);
ОбработкаТабличныхЧастей.РассчитатьСуммуНДСТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);
КонецПроцедуры // ПриИзмененииНоменклатурыТовары()
// Процедура выполняет необходимые действия при изменении количества в ТЧ «Товары».
//
// Параметры:
// Элемент — ЭУ, для которого вызван обработчик.
//
Процедура ПриИзмененииКоличестваТовары(Элемент)
СтрокаТабличнойЧасти = ЭлементыФормы.Товары.ТекущиеДанные;
// Рассчитать реквизиты табличной части.
ОбработкаТабличныхЧастей.РассчитатьКоличествоМестТабЧасти(ЭлементыФормы.Товары.ТекущиеДанные, ДокументОбъект);
ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти(ЭлементыФормы.Товары.ТекущиеДанные, ЭтотОбъект);
ОбработкаТабличныхЧастей.РассчитатьСуммуНДСТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);
КонецПроцедуры // ПриИзмененииКоличестваТовары()
// Процедура выполняет необходимые действия перед удалением строки ТЧ «Товары».
//
// Параметры:
// Элемент — ЭУ, для которого вызван обработчик.
// Отказ — флаг отказа.
//
Процедура ПередУдалениемТовары(Элемент, Отказ)
СтрокаТабличнойЧасти = ЭлементыФормы.Товары.ТекущиеДанные;
Если Элемент.ТекущиеДанные = мТекущаяСтрокаНабор И мФормаСоставНабора.Открыта() Тогда
мФормаСоставНабора.Закрыть();
КонецЕсли;
УправлениеЗапасами.ОчиститьСоставНабора(СтрокаТабличнойЧасти, ЭтотОбъект);
КонецПроцедуры // ПередУдалениемТовары()
// Процедура выполняет необходимые действия после удаления строки ТЧ «Товары».
//
// Параметры:
// Элемент — ЭУ, для которого вызван обработчик.
//
Процедура ПослеУдаленияТовары(Элемент)
ПересчитатьАвтоматическиеСкидки();
// Итоговая информация об отклонение от плановой себестоимости.
РаботаСДиалогами.СформироватьНадписьИтоговоеОтклонениеОтПлановойСебестоимости(ЭлементыФормы.ИнфНадписьИтоговоеОтклонениеОтПлановойСебестоимости, ЭтотОбъект);
КонецПроцедуры // ПослеУдаленияТовары()
// Процедура устанавливает подменю «Заполнить» в командных панелях ТЧ документа при необходимости
//
Процедура УстановитьКнопкиПодменюЗаполненияТЧ();
мКнопкиЗаполненияТЧ = УниверсальныеМеханизмы.ПолучитьДеревоКнопокЗаполненияТабличныхЧастей(Ссылка,Новый Действие(«НажатиеНаДополнительнуюКнопкуЗаполненияТЧ»));
СоответствиеТЧ = Новый Соответствие;
СоответствиеТЧ.Вставить(ЭлементыФормы.Товары,ЭлементыФормы.КоманднаяПанельТовары.Кнопки.ПодменюЗаполнить);
СоответствиеТЧ.Вставить(ЭлементыФормы.ВозвратнаяТара,ЭлементыФормы.КоманднаяПанельВозвратнаяТара.Кнопки.ПодменюЗаполнить);
СоответствиеТЧ.Вставить(ЭлементыФормы.Услуги,ЭлементыФормы.КоманднаяПанельУслуги);
УниверсальныеМеханизмы.СформироватьПодменюЗаполненияТЧ(мКнопкиЗаполненияТЧ,СоответствиеТЧ);
КонецПроцедуры
// Процедура вызывается для обработки программного изменения строки.
//
// Параметры
// СтрокаТабличнойЧасти — строка ТЧ «Товары», изменение которой нужно обработать.
// ИзмененнаяКолонка — название колонки, обработчик изменения которой необходимо вызвать.
//
Процедура ИзменениеСтрокиПрограммное(СтрокаТабличнойЧасти, ИзмененнаяКолонка) Экспорт
ЭлементыФормы.Товары.ТекущаяСтрока = СтрокаТабличнойЧасти;
Если ИзмененнаяКолонка = «Номенклатура» Тогда
ПриИзмененииНоменклатурыТовары(ЭлементыФормы.Товары);
ИначеЕсли ИзмененнаяКолонка = «Количество» Тогда
ПриИзмененииКоличестваТовары(ЭлементыФормы.Товары);
КонецЕсли;
КонецПроцедуры // ИзменениеСтрокиПрограммное()
// Процедура вызывается для обработки программного удалениия строки.
//
// Параметры
// СтрокаТабличнойЧасти — строка ТЧ «Товары», которую нужно удалить.
//
Процедура УдалениеСтрокиПрограммное(СтрокаТабличнойЧасти) Экспорт
ЭлементыФормы.Товары.ТекущаяСтрока = СтрокаТабличнойЧасти;
ПередУдалениемТовары(ЭлементыФормы.Товары, Ложь);
Товары.Удалить(СтрокаТабличнойЧасти);
ПослеУдаленияТовары(ЭлементыФормы.Товары);
КонецПроцедуры // УдалениеСтрокиПрограммное()
// Функция формирует структуру параметров для поиска по строке контактного лица контрагента.
//
// Параметры
// НЕТ
//
// Возвращаемое значение:
// Структура имен и значений параметров
//
Функция ПолучитьСтруктуруПараметровПоискаПоСтроке()
СтруктураПараметров = Новый Структура;
Если ЗначениеЗаполнено(Контрагент) Тогда
СтруктураПараметров.Вставить(«Владелец», Контрагент);
КонецЕсли;
Возврат СтруктураПараметров;
КонецФункции // ПолучитьСтруктуруПараметровПоискаПоСтроке()()
// Процедура выполняет необходимые действия при изменении договора взаиморасчетов
// с контрагентом.
//
Процедура ПриИнтерактивномИзмененииДоговора()
ПриИзмененииДоговора();
МеханизмНумерацииОбъектов.ОбновитьПодсказкуКодНомерОбъекта(ЭтотОбъект.Метаданные(), ЭлементыФормы.ДействияФормы.Кнопки.Подменю, ЭлементыФормы.Номер);
РаботаСДиалогами.СформироватьНадписьДолга(ДоговорКонтрагента, Ссылка, ЭлементыФормы.ИнфНадписьДолга, , Истина);
УстановитьЗаголовкиПоДоговору();
// Услуги на комиссию не отдаем.
мВидимостьЗакладкиУслуг = ДоговорКонтрагента.ВидДоговора <> Перечисления.ВидыДоговоровКонтрагентов.СКомиссионером;
УстановитьВидимость();
мТекущийДоговорКонтрагента = ДоговорКонтрагента;
КонецПроцедуры // ПриИнтерактивномИзмененииДоговора()
// Функция формирует список запросов для передачи в форму подбора.
//
// Параметры:
// ТабличнаяЧасть — табличная часть, для подбора в которую формируется список запросов.
//
// Возвращаемое значение:
// Список значений — список запросов.
//
Функция СформироватьСписокЗапросовДляПодбора(ТабличнаяЧасть)
СписокЗапросов = Новый СписокЗначений();
СписокЗапросов.Добавить(,»По справочнику»);
Если ТабличнаяЧасть = Товары
ИЛИ ТабличнаяЧасть = ВозвратнаяТара Тогда
СписокЗапросов.Добавить(«ОстаткиНоменклатуры», «По остаткам номенклатуры»);
Если ЗначениеЗаполнено(ТипЦен) ИЛИ (ЗначениеЗаполнено(ДоговорКонтрагента) И ДоговорКонтрагента.ВидУсловийДоговора = Перечисления.ВидыУсловийДоговоровВзаиморасчетов.СДополнительнымиУсловиями) Тогда
СписокЗапросов.Добавить(«РасходОстаткиИЦеныНоменклатуры», «По остаткам и ценам номенклатуры»);
СписокЗапросов.Добавить(«РасходЦеныНоменклатуры», «По ценам номенклатуры»);
КонецЕсли;
ИначеЕсли ТабличнаяЧасть = Услуги Тогда
СписокЗапросов.Добавить(«РасходУслуги», «По услугам предприятия»);
Если ЗначениеЗаполнено(ТипЦен) ИЛИ (ЗначениеЗаполнено(ДоговорКонтрагента) И ДоговорКонтрагента.ВидУсловийДоговора = Перечисления.ВидыУсловийДоговоровВзаиморасчетов.СДополнительнымиУсловиями) Тогда
СписокЗапросов.Добавить(«РасходЦеныУслуг», «По ценам и услугам предприятия»);
КонецЕсли;
КонецЕсли;
Возврат СписокЗапросов;
КонецФункции // СформироватьСписокЗапросовДляПодбора()
// Процедура обновляет параметры в форме подбора, если она открыта.
//
// Параметры:
// Реквизит — измененный реквизит.
//
Процедура ОбновитьФормуПодбора(Реквизит)
РаботаСДиалогами.ОбновитьПараметрыИФормуПодбора(ЭтотОбъект, ЭтаФорма, Реквизит);
КонецПроцедуры // ОбновитьФормуПодбора()
// Процедура вызывает сервисный механизм для подбора номеклатуры в табличную часть.
//
// Параметры:
// ТабличнаяЧасть — табличная часть, в которую осуществляется подбор.
//
Процедура ДействиеПодбор(ТабличнаяЧасть)
Перем Команда, Валюта;
ЕстьЦена = мМожноМенятьЦенуВДокументе;
ЕстьСерия = ТабличнаяЧасть = Товары
И ЗначениеЗаполнено(ДоговорКонтрагента)
И ДоговорКонтрагента.ОбособленныйУчетТоваровПоЗаказамПокупателей
И мРезервироватьПоСериям
И (ЗначениеЗаполнено(СкладГруппа) и ТипЗнч(СкладГруппа)=Тип(«СправочникСсылка.Склады»));
СкрыватьХарактеристику = Ложь;
Валюта = ВалютаДокумента;
ПодбиратьУслуги = Ложь;
Если ТабличнаяЧасть = Товары Тогда
Команда = «ПодборВТабличнуюЧастьТовары»;
ИмяТабличнойЧасти = «Товары»;
ИначеЕсли ТабличнаяЧасть = Услуги Тогда
Команда = «ПодборВТабличнуюЧастьУслуги»;
ИмяТабличнойЧасти = «Услуги»;
СкрыватьХарактеристику = Истина;
ПодбиратьУслуги = Истина;
ИначеЕсли ТабличнаяЧасть = ВозвратнаяТара Тогда
Команда = «ПодборВТабличнуюЧастьВозвратнаяТара»;
ИмяТабличнойЧасти = «Тара»;
КонецЕсли;
СписокВидовПодбора = СформироватьСписокЗапросовДляПодбора(ТабличнаяЧасть);
ПредставлениеДок = Метаданные().Представление();
СтруктураПараметровПодбора = Новый Структура();
СтруктураПараметровПодбора.Вставить(«Команда» , Команда);
СтруктураПараметровПодбора.Вставить(«СписокВидовПодбора» , СписокВидовПодбора);
// Параметры запросов.
ВременнаяДатаРасчетов = ?(НачалоДня(Дата) = НачалоДня(ТекущаяДата()), Неопределено, Дата);
СтруктураПараметровПодбора.Вставить(«ДатаРасчетов» , ВременнаяДатаРасчетов);
СтруктураПараметровПодбора.Вставить(«Склад» , СкладГруппа);
СтруктураПараметровПодбора.Вставить(«ТипЦен» , ТипЦен);
СтруктураПараметровПодбора.Вставить(«ДоговорКонтрагента» , ДоговорКонтрагента);
СтруктураПараметровПодбора.Вставить(«Контрагент» , Контрагент);
СтруктураПараметровПодбора.Вставить(«Организация» , Организация);
СтруктураПараметровПодбора.Вставить(«ПодбиратьУслуги» , ПодбиратьУслуги);
СтруктураПараметровПодбора.Вставить(«СпособЗаполненияЦен» , Перечисления.СпособыЗаполненияЦен.ПоЦенамНоменклатуры);
СтруктураПараметровПодбора.Вставить(«ЕстьЦена» , ЕстьЦена);
СтруктураПараметровПодбора.Вставить(«ЕстьСерия» , ЕстьСерия);
СтруктураПараметровПодбора.Вставить(«ИспользоватьГруппуДоступности», Истина);
СтруктураПараметровПодбора.Вставить(«ВалютаДокумента» , Валюта);
СтруктураПараметровПодбора.Вставить(«СкрыватьХарактеристику» , СкрыватьХарактеристику);
СтруктураПараметровПодбора.Вставить(«Заголовок», «Подбор номенклатуры в документ » +
ПредставлениеДок + » № » + Номер + » (» + ИмяТабличнойЧасти + «)»);
СтруктураПараметровПодбора.Вставить(«УсловиеПродаж» , УсловиеПродаж);
РаботаСДиалогами.ОткрытьПодборНоменклатуры(ЭтаФорма, СтруктураПараметровПодбора, Метаданные());
КонецПроцедуры // ДействиеПодбор()
// Производит заполнение документа переданными из формы подбора данными.
//
// Параметры:
// ТабличнаяЧасть — табличная часть, в которую надо добавлять подобранную позицию номенклатуры;
// ЗначениеВыбора — структура, содержащая параметры подбора.
//
Процедура ОбработкаПодбора(ТабличнаяЧасть, ЗначениеВыбора) Экспорт
Перем Номенклатура;
Если РаботаСДиалогами.ПроверитьЧтоКачествоВСтруктуреПодбораНеУдовлетворяетУсловиямПодбора(ЗначениеВыбора,
Истина) Тогда
Возврат;
КонецЕсли;
// Получим параметры подбора из структуры подбора.
ЗначениеВыбора.Свойство(«Номенклатура», Номенклатура);
Если (ТабличнаяЧасть = Товары ИЛИ ТабличнаяЧасть = ВозвратнаяТара)
И Номенклатура.Услуга Тогда
Предупреждение(«В данном контексте услуги не подбираются!»);
Возврат;
ИначеЕсли ТабличнаяЧасть = Услуги И Не Номенклатура.Услуга Тогда
Предупреждение(«В данном контексте товары не подбираются!»);
Возврат;
КонецЕсли;
СтрокаТабличнойЧасти = ЗаполнитьТабличнуюЧастьИзПодбора(ТабличнаяЧасть, ЗначениеВыбора);
Если ТабличнаяЧасть = Товары Тогда
Если СтрокаТабличнойЧасти.СерияНоменклатуры <> Справочники.СерииНоменклатуры.ПустаяСсылка() Тогда
СтрокаТабличнойЧАсти.Размещение = СкладГруппа;
КонецЕсли;
КонецЕсли;
Если (ТабличнаяЧасть = Товары
ИЛИ ТабличнаяЧасть = Услуги) Тогда
РаботаСДиалогами.СформироватьНадписьИтоговоеОтклонениеОтПлановойСебестоимости(ЭлементыФормы.ИнфНадписьИтоговоеОтклонениеОтПлановойСебестоимости, ЭтотОбъект);
КонецЕсли;
ТабличнаяЧастьИмя = ?(ТабличнаяЧасть = Товары, «Товары»,»ВозвратнаяТара»);
ЭлементыФормы[ТабличнаяЧастьИмя].ТекущаяСтрока = СтрокаТабличнойЧасти;
ЭлементыФормы[ТабличнаяЧастьИмя].ТекущаяКолонка = ЭлементыФормы[ТабличнаяЧастьИмя].Колонки[«Количество»];
КонецПроцедуры // ОбработкаПодбора()
// Производит заполнение и установку необходимых полей при изменении характеристики товара в табличной части.
//
Процедура ПриИзмененииХарактеристикиНоменклатурыТоваров(СтрокаТабличнойЧасти)
// Заполняем реквизиты табличной части.
ОбработкаТабличныхЧастей.ЗаполнитьЕдиницуЦенуПродажиТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект, мВалютаРегламентированногоУчета);
// Состав набора зависит от его характеристики.
УправлениеЗапасами.ДобавитьСоставНабора(СтрокаТабличнойЧасти, ЭтотОбъект);
КонецПроцедуры // ПриИзмененииХарактеристикиНоменклатурыТоваров()
// Обновляет текущее значение учетной политики розничная торговля облагается ЕНВД.
//
Процедура ПриИзмененииОблагаетсяЕНВД(РежимВызова = «»)
Если НЕ ЗначениеЗаполнено(РежимВызова) Тогда
мОрганизацияЯвляетсяПлательщикомЕНВД = ОбщегоНазначения.УчетнаяПолитикаНалоговыйУчет(«ОрганизацияЯвляетсяПлательщикомЕНВД», Организация, Дата);
мТекущаяОрганизация = Организация;
Иначе
РаботаСДиалогами.ПриИзмененииОрганизацияЯвляетсяПлательщикомЕНВД(ЭтотОбъект, РежимВызова, Услуги,
мОрганизацияЯвляетсяПлательщикомЕНВД, мТекущаяОрганизация);
КонецЕсли;
КонецПроцедуры // ПриИзмененииОблагаетсяЕНВД()
Процедура ОбработкаВыбораЗаполненияТабличнойЧастиИзТабличногоДокумента(ЗначениеВыбора)
ТабличнаяЧасть = ЭтотОбъект[ЗначениеВыбора.ИмяТабличнойЧасти];
ТабличнаяЧасть.Очистить();
Для каждого Строка Из ЗначениеВыбора.ТаблицаДанных Цикл
СтрокаТабличнойЧасти = ТабличнаяЧасть.Добавить();
СтрокаТабличнойЧасти.Номенклатура = Строка.Номенклатура;
СтрокаТабличнойЧасти.Количество = Строка.Количество;
Если ЗначениеВыбора.ИмяТабличнойЧасти = «Товары» Тогда
ПриИзмененииНоменклатурыТоваров(СтрокаТабличнойЧасти);
ОбработкаТабличныхЧастей.РассчитатьКоличествоМестТабЧасти(СтрокаТабличнойЧасти, ДокументОбъект);
ИначеЕсли ЗначениеВыбора.ИмяТабличнойЧасти = «ВозвратнаяТара» Тогда
// Выполнить общие действия для всех документов при изменении возвратной тары.
ОбработкаТабличныхЧастей.ПриИзмененииВозвратнойТарыТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);
// Заполнить реквизиты табличной части.
ОбработкаТабличныхЧастей.ЗаполнитьЦенуВозвратнойТарыТабЧастиПоступление(СтрокаТабличнойЧасти, ЭтотОбъект, мВалютаРегламентированногоУчета);
// Рассчитать реквизиты табличной части.
ОбработкаТабличныхЧастей.РассчитатьСуммуВозвратнойТарыТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);
КонецЕсли;
КонецЦикла;
КонецПроцедуры // ОбработкаВыбораЗаполненияТабличнойЧастиИзТабличногоДокумента()
// Очищает значение реквизита в табличных частях «Товары», «Возвратная тара».
//
Процедура ОчиститьРеквизитВТабличнойЧасти(ТабличнаяЧасть, ИмяРеквизита)
// Очистим значения в строках
Для Каждого Строка Из ТабличнаяЧасть Цикл
Строка[ИмяРеквизита] = Неопределено;
КонецЦикла;
КонецПроцедуры
// Процедура очищает колонку «Размещение» табличной части.
//
Процедура ОчиститьРазмещениеВТабличнойЧасти(ТабличнаяЧасть)
ОчиститьРеквизитВТабличнойЧасти(ТабличнаяЧасть, «Размещение»);
Если ТабличнаяЧасть = Товары Тогда
Если мКолонкиТовары.СерияНоменклатуры.Видимость Тогда
ОчиститьРеквизитВТабличнойЧасти(ТабличнаяЧасть, «СерияНоменклатуры»);
КонецЕсли;
ТабличнаяЧасть.Свернуть(«Номенклатура, ХарактеристикаНоменклатуры, Цена, СтавкаНДС, ЕдиницаИзмерения, ЕдиницаИзмеренияМест, Коэффициент, ПроцентСкидкиНаценки, ПроцентАвтоматическихСкидок, УсловиеАвтоматическойСкидки, ЗначениеУсловияАвтоматическойСкидки, ПлановаяСебестоимость, КлючСтроки», «Количество, КоличествоМест, Сумма, СуммаНДС»);
ИначеЕсли ТабличнаяЧасть = ВозвратнаяТара Тогда
ТабличнаяЧасть.Свернуть(«Номенклатура, Цена», «Количество, Сумма»);
КонецЕсли;
КонецПроцедуры
// Выполняет необходимые действия при изменении вида склада.
//
Процедура ПриИзмененииВидаСклада()
// Определим текущий вид склада
Если ЗначениеЗаполнено(СкладГруппа)
И ТипЗнч(СкладГруппа) = Тип(«СправочникСсылка.Склады») Тогда
ВидСклада = СкладГруппа.ВидСклада;
Иначе
ВидСклада = Перечисления.ВидыСкладов.Оптовый;
КонецЕсли;
// Оформление колонок таблицы
ФлагАвтоОтметкиНезаполненого = Истина;
Если (ВидСклада = Перечисления.ВидыСкладов.Оптовый ИЛИ НЕ ЗначениеЗаполнено(ВидСклада)) И мРазрешитьНулевыеЦеныВОпте Тогда
ФлагАвтоОтметкиНезаполненого = Ложь;
ИначеЕсли ВидСклада = Перечисления.ВидыСкладов.Розничный И мРазрешитьНулевыеЦеныВРознице Тогда
ФлагАвтоОтметкиНезаполненого = Ложь;
КонецЕсли;
мКолонкиТовары.Сумма.АвтоОтметкаНезаполненного = ФлагАвтоОтметкиНезаполненого;
мКолонкиТовары.Цена.АвтоОтметкаНезаполненного = ФлагАвтоОтметкиНезаполненого;
мКолонкиВозвратнаяТара.Сумма.АвтоОтметкаНезаполненного = ФлагАвтоОтметкиНезаполненого;
мКолонкиВозвратнаяТара.Цена.АвтоОтметкаНезаполненного = ФлагАвтоОтметкиНезаполненого;
КонецПроцедуры // ПриИзмененииВидаСклада()
////////////////////////////////////////////////////////////////////////////////
// ПРОЦЕДУРЫ И ФУНКЦИИ ДЛЯ УПРАВЛЕНИЯ ВНЕШНИМ ВИДОМ ФОРМЫ
// Устанавливает соответстующие свойства поля ввода цены при изменении
// номенклатуры в текущей строке табличной части.
//
// Параметры:
// Номенклатура — ссылка на справочник, элемент номенклатуры, для которого будем устанавливать цену
//
Процедура УстановитьСвойстваПоляВводаЦены()
ТекущаяСтрока = ЭлементыФормы.Товары.ТекущиеДанные;
ЭлементУправления = мКолонкиТовары.Цена.ЭлементУправления;
ЭлементУправления.КнопкаСпискаВыбора = Ложь;
КонецПроцедуры // УстановитьСвойстваПоляВводаЦены()
// Процедура устанавливает доступность кнопки «Заполнить и провести». Кнопка доступна,
// если документ — внешний заказ, его дата совпадает с текущей и установлен хотя бы один
// из флагов Авторазмещение или Авторезервирование.
//
// Параметры:
// Нет.
//
Процедура УстановитьДоступностьКнопкиЗаполнитьИПровести()
ЭлементыФормы.ДействияФормы.Кнопки.ПодменюЗаполнитьИПровести.Доступность =
НачалоДня(Дата) = НачалоДня(ТекущаяДата());
КонецПроцедуры // УстановитьДоступностьКнопкиЗаполнитьИПровести
// Процедура устанавливает доступность кнопки «СоздатьРеализацию». Кнопка доступна,
// если документ уже был записан.
//
// Параметры:
// Нет.
//
Процедура УстановитьДоступностьКнопкиДействиеСоздатьРеализацию()
ДоступностьСозданияРеализации = НЕ Модифицированность() И не ЭтаФорма.ТолькоПросмотр;
ЭлементыФормы.ДействияФормы.Кнопки.ДействиеСоздатьРеализацию.Доступность = ДоступностьСозданияРеализации;
КонецПроцедуры // УстановитьДоступностьКнопкиДействиеСоздатьРеализацию()
// Процедура устанавливает видимость для тех колонок в табличной части
// «Товары», видимость которых определяется реквизитами документа.
//
// Параметры:
// Нет.
//
Процедура УстановитьВидимость()
// Колонки налога показываем только тогда, когда его учитываем.
Если УчитыватьНДС <> мКолонкиТовары.СтавкаНДС.Видимость Тогда
ОбработкаТабличныхЧастей.УстановитьВидимостьКолонкиТабЧасти(мКолонкиТовары.СтавкаНДС, УчитыватьНДС);
КонецЕсли;
Если УчитыватьНДС <> мКолонкиТовары.СуммаНДС.Видимость Тогда
ОбработкаТабличныхЧастей.УстановитьВидимостьКолонкиТабЧасти(мКолонкиТовары.СуммаНДС, УчитыватьНДС);
КонецЕсли;
Если УчитыватьНДС <> мКолонкиУслуги.СтавкаНДС.Видимость Тогда
ОбработкаТабличныхЧастей.УстановитьВидимостьКолонкиТабЧасти(мКолонкиУслуги.СтавкаНДС, УчитыватьНДС);
КонецЕсли;
Если УчитыватьНДС <> мКолонкиУслуги.СуммаНДС.Видимость Тогда
ОбработкаТабличныхЧастей.УстановитьВидимостьКолонкиТабЧасти(мКолонкиУслуги.СуммаНДС, УчитыватьНДС);
КонецЕсли;
// Управление доступностью элементов формы в зависимости от вида операции
КнопкиКоманднойПанели = ЭлементыФормы.ДействияФормы.Кнопки;
ТолькоПросмотр = ЭтаФорма.ТолькоПросмотр;
//для кнопок с неустановленным признаком «ИзменяетДанные» явно установим доступность
//для кнопок Анализ и СоздатьРеализацию — есть отдельная логика, которая зависит еще и от других параметров
КнопкиКоманднойПанели.Файлы1.Доступность = не ТолькоПросмотр;
Если ЭлементыФормы.ОсновнаяПанель.Страницы.Тара.Доступность Тогда
ЭлементыФормы.ОсновнаяПанель.Страницы.Тара.Видимость = мИспользоватьТару;
КонецЕсли;
ОбособленныйУчет = ЗначениеЗаполнено(ДоговорКонтрагента) И
ДоговорКонтрагента.ОбособленныйУчетТоваровПоЗаказамПокупателей;
ВидимостьСерии = мРезервироватьПоСериям И ОбособленныйУчет;
ОбработкаТабличныхЧастей.УстановитьВидимостьКолонкиТабЧасти(мКолонкиТовары.СерияНоменклатуры, ВидимостьСерии);
мКолонкиТовары.Размещение.ИзменятьВидимость = истина;
ЭлементыФормы.ОсновнаяПанель.Страницы.Услуги.Видимость = мВидимостьЗакладкиУслуг;
КонецПроцедуры // УстановитьВидимость()
// Процедура устанавливает заголовки по выбранному договору для:
// — элемента формы НадписьСуммаВзаиморасчетов.
//
// Параметры:
// Нет.
//
Процедура УстановитьЗаголовкиПоДоговору()
РаботаСДиалогами.УстановитьНадписьСуммыВзаиморасчетов(ЭтотОбъект, ЭтаФорма);
КонецПроцедуры // УстановитьЗаголовкиПоДоговору()
// Процедура формирует текст в информационной надписи об итогах документа.
//
// Параметры:
// Нет.
//
Процедура ОбновитьПодвал()
// При изменении данных обновим суммы в подвале.
СуммаВсего = ПолучитьСуммуСНДС();
СуммаВсегоНДС = ПолучитьСуммуНДС();
ЭлементыФормы.Всего.Значение = ОбщегоНазначения.ФорматСумм(СуммаВсего);
ЭлементыФормы.ВсегоНДС.Значение = ОбщегоНазначения.ФорматСумм(СуммаВсегоНДС);
//+
СуммаВсегоТовары = ПолучитьСуммуСНДСТовары();
ВсегоНДСТовары = ПолучитьСуммуНДСТовары();
ЭлементыФормы.ВсегоТовары.Значение = ОбщегоНазначения.ФорматСумм(СуммаВсегоТовары);
ЭлементыФормы.ВсегоНДСТовары.Значение = ОбщегоНазначения.ФорматСумм(ВсегоНДСТовары);
СуммаВсегоМатериалы = ПолучитьСуммуСНДСМатериалы();
ВсегоНДСМатериалы = ПолучитьСуммуНДСМатериалы();
ЭлементыФормы.ВсегоМатериалы.Значение = ОбщегоНазначения.ФорматСумм(СуммаВсегоМатериалы);
ЭлементыФормы.ВсегоНДСМатериалы.Значение = ОбщегоНазначения.ФорматСумм(ВсегоНДСМатериалы);
СуммаВсегоУслуги = ПолучитьСуммуСНДСУслуги();
ВсегоНДСУслуги = ПолучитьСуммуНДСУслуги();
ЭлементыФормы.ВсегоУслуги.Значение = ОбщегоНазначения.ФорматСумм(СуммаВсегоУслуги);
ЭлементыФормы.ВсегоНДСУслуги.Значение = ОбщегоНазначения.ФорматСумм(ВсегоНДСУслуги);
//-
ВременнаяСтрока = «»;
Если (ЗначениеЗаполнено(ДокументОбъект.ВалютаДокумента))
И (ДокументОбъект.ВалютаДокумента <> мВалютаРегламентированногоУчета) Тогда
ВременнаяСтрока = ВременнаяСтрока + ЗаполнениеДокументов.КратностьДокумента(ДокументОбъект, мВалютаРегламентированногоУчета) + ДокументОбъект.ВалютаДокумента
+ » = » + ЗаполнениеДокументов.КурсДокумента(ДокументОбъект, мВалютаРегламентированногоУчета)
+ мВалютаРегламентированногоУчета + «, «;
КонецЕсли;
Если ЗначениеЗаполнено(ДокументОбъект.ТипЦен) Тогда
ВременнаяСтрока = ВременнаяСтрока + «Тип цен: » + ДокументОбъект.ТипЦен;
Иначе
ВременнаяСтрока = ВременнаяСтрока + «Тип цен: Не заполнено!»;
КонецЕсли;
Если ЗначениеЗаполнено(ДокументОбъект.УсловиеПродаж) Тогда
ВременнаяСтрока = ВременнаяСтрока + «, Условие продаж: » + ДокументОбъект.УсловиеПродаж;
КонецЕсли;
ЭлементыФормы.ИнфНадписьТоварыИтоги.Заголовок = ВременнаяСтрока;
Если НЕ ЗначениеЗаполнено(ДокументОбъект.ВалютаДокумента) Тогда
ЭлементыФормы.НадписьВсего.Заголовок = «Всего (<>):»;
Иначе
ЭлементыФормы.НадписьВсего.Заголовок = «Всего (» + СокрЛП(ДокументОбъект.ВалютаДокумента) +»):»;
КонецЕсли;
//+
Если НЕ ЗначениеЗаполнено(ДокументОбъект.ВалютаДокумента) Тогда
ЭлементыФормы.НадписьВсегоТовары.Заголовок = «Всего товары (<>):»;
Иначе
ЭлементыФормы.НадписьВсегоТовары.Заголовок = «Всего товары (» + СокрЛП(ДокументОбъект.ВалютаДокумента) +»):»;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ДокументОбъект.ВалютаДокумента) Тогда
ЭлементыФормы.НадписьВсегоМатериалы.Заголовок = «Всего материалы (<>):»;
Иначе
ЭлементыФормы.НадписьВсегоМатериалы.Заголовок = «Всего материалы (» + СокрЛП(ДокументОбъект.ВалютаДокумента) +»):»;
КонецЕсли;
25 — 17.09.15 — 18:05
>>СтрокаТабличнойЧасти.Номенклатура.ВидНоменклатуры
у тебя в СтрокаТабличнойЧасти.Номенклатура какаято хрень.
И у нее нет ‘ВидНоменклатуры’
26 — 17.09.15 — 18:05
Пардон, не все скопировала вот полностью
Перем мОповещатьВладельцаОЗакрытии Экспорт;
// Хранит последнюю установленную дату документа — для проверки перехода документа в другой период
Перем мТекущаяДатаДокумента;
// Хранит текущее значение учетной политики, организация является плательщиком ЕНВД
Перем мОрганизацияЯвляетсяПлательщикомЕНВД;
// Хранит текущее значение организации для контроля учетной политики, организация является плательщиком ЕНВД
Перем мТекущаяОрганизация;
Перем мКолонкиТовары, мКолонкиВозвратнаяТара, мИспользоватьТару, мКолонкиУслуги, мКолонкиТаблицаАвтоСкидок;
Перем мВидимостьЗакладкиУслуг;
Перем мРазрешитьНулевыеЦеныВОпте, мРазрешитьНулевыеЦеныВРознице;
// Устанавливается в значение «Истина», если пользователю можно менять цену
// в документе
Перем мМожноМенятьЦенуВДокументе;
Перем мЧас;
Перем мМинута;
Перем мОбработкаПоискаПоСтроке;
Перем мТекстПоискаПоСтроке;
Перем мПоследнееЗначениеЭлементаПоискаПоСтроке;
// Хранит суммарное количество товаров в табличной части Товары
Перем мТекущееКоличествоТоваров;
Перем мФормаСоставНабора, мТекущаяСтрокаНабор;
// Хранит дерево кнопок подменю заполнение ТЧ
Перем мКнопкиЗаполненияТЧ;
Перем мКартинкаНаборКомплект;
Перем мТерминалы;
Перем мИспользоватьВнутренниеЗаказы;
////////////////////////////////////////////////////////////////////////////////
// ПРОЦЕДУРЫ И ФУНКЦИИ ОБЩЕГО НАЗНАЧЕНИЯ
// Процедура выполняет необходимые действия при изменении дисконтной карты.
//
Процедура ПриИзмененииДисконтнойКарты()
Если ЗначениеЗаполнено(ДисконтнаяКарта) Тогда
Если ЗначениеЗаполнено(ДисконтнаяКарта.ВладелецКарты)
И ДисконтнаяКарта.ВладелецКарты <> Контрагент Тогда
Если НЕ ЗначениеЗаполнено(Контрагент) Тогда
Ответ = КодВозвратаДиалога.Да;
Иначе
Ответ = Вопрос(«У выбранной дисконтной карты владелец » + СокрЛП(ДисконтнаяКарта.ВладелецКарты) + «.»
+ Символы.ПС + «Изменить контрагента в документе?», РежимДиалогаВопрос.ДаНет);
КонецЕсли;
Если Ответ = КодВозвратаДиалога.Да Тогда
Контрагент = ДисконтнаяКарта.ВладелецКарты;
ПриИзмененииКонтрагента();
ПриИнтерактивномИзмененииДоговора();
КонецЕсли;
КонецЕсли;
КонецЕсли;
ПересчитатьАвтоматическиеСкидки();
КонецПроцедуры //ПриИзмененииДисконтнойКарты()
// Процедура выполняет необходимые действия при изменении номенклатуры в ТЧ «Товары».
//
// Параметры:
// Элемент — ЭУ, для которого вызван обработчик.
//
Процедура ПриИзмененииНоменклатурыТовары(Элемент)
СтрокаТабличнойЧасти = ЭлементыФормы.Товары.ТекущиеДанные;
ПриИзмененииНоменклатурыТоваров(СтрокаТабличнойЧасти);
ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);
ОбработкаТабличныхЧастей.РассчитатьСуммуНДСТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);
КонецПроцедуры // ПриИзмененииНоменклатурыТовары()
// Процедура выполняет необходимые действия при изменении количества в ТЧ «Товары».
//
// Параметры:
// Элемент — ЭУ, для которого вызван обработчик.
//
Процедура ПриИзмененииКоличестваТовары(Элемент)
СтрокаТабличнойЧасти = ЭлементыФормы.Товары.ТекущиеДанные;
// Рассчитать реквизиты табличной части.
ОбработкаТабличныхЧастей.РассчитатьКоличествоМестТабЧасти(ЭлементыФормы.Товары.ТекущиеДанные, ДокументОбъект);
ОбработкаТабличныхЧастей.РассчитатьСуммуТабЧасти(ЭлементыФормы.Товары.ТекущиеДанные, ЭтотОбъект);
ОбработкаТабличныхЧастей.РассчитатьСуммуНДСТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);
КонецПроцедуры // ПриИзмененииКоличестваТовары()
// Процедура выполняет необходимые действия перед удалением строки ТЧ «Товары».
//
// Параметры:
// Элемент — ЭУ, для которого вызван обработчик.
// Отказ — флаг отказа.
//
Процедура ПередУдалениемТовары(Элемент, Отказ)
СтрокаТабличнойЧасти = ЭлементыФормы.Товары.ТекущиеДанные;
Если Элемент.ТекущиеДанные = мТекущаяСтрокаНабор И мФормаСоставНабора.Открыта() Тогда
мФормаСоставНабора.Закрыть();
КонецЕсли;
УправлениеЗапасами.ОчиститьСоставНабора(СтрокаТабличнойЧасти, ЭтотОбъект);
КонецПроцедуры // ПередУдалениемТовары()
// Процедура выполняет необходимые действия после удаления строки ТЧ «Товары».
//
// Параметры:
// Элемент — ЭУ, для которого вызван обработчик.
//
Процедура ПослеУдаленияТовары(Элемент)
ПересчитатьАвтоматическиеСкидки();
// Итоговая информация об отклонение от плановой себестоимости.
РаботаСДиалогами.СформироватьНадписьИтоговоеОтклонениеОтПлановойСебестоимости(ЭлементыФормы.ИнфНадписьИтоговоеОтклонениеОтПлановойСебестоимости, ЭтотОбъект);
КонецПроцедуры // ПослеУдаленияТовары()
// Процедура устанавливает подменю «Заполнить» в командных панелях ТЧ документа при необходимости
//
Процедура УстановитьКнопкиПодменюЗаполненияТЧ();
мКнопкиЗаполненияТЧ = УниверсальныеМеханизмы.ПолучитьДеревоКнопокЗаполненияТабличныхЧастей(Ссылка,Новый Действие(«НажатиеНаДополнительнуюКнопкуЗаполненияТЧ»));
СоответствиеТЧ = Новый Соответствие;
СоответствиеТЧ.Вставить(ЭлементыФормы.Товары,ЭлементыФормы.КоманднаяПанельТовары.Кнопки.ПодменюЗаполнить);
СоответствиеТЧ.Вставить(ЭлементыФормы.ВозвратнаяТара,ЭлементыФормы.КоманднаяПанельВозвратнаяТара.Кнопки.ПодменюЗаполнить);
СоответствиеТЧ.Вставить(ЭлементыФормы.Услуги,ЭлементыФормы.КоманднаяПанельУслуги);
УниверсальныеМеханизмы.СформироватьПодменюЗаполненияТЧ(мКнопкиЗаполненияТЧ,СоответствиеТЧ);
КонецПроцедуры
// Процедура вызывается для обработки программного изменения строки.
//
// Параметры
// СтрокаТабличнойЧасти — строка ТЧ «Товары», изменение которой нужно обработать.
// ИзмененнаяКолонка — название колонки, обработчик изменения которой необходимо вызвать.
//
Процедура ИзменениеСтрокиПрограммное(СтрокаТабличнойЧасти, ИзмененнаяКолонка) Экспорт
ЭлементыФормы.Товары.ТекущаяСтрока = СтрокаТабличнойЧасти;
Если ИзмененнаяКолонка = «Номенклатура» Тогда
ПриИзмененииНоменклатурыТовары(ЭлементыФормы.Товары);
ИначеЕсли ИзмененнаяКолонка = «Количество» Тогда
ПриИзмененииКоличестваТовары(ЭлементыФормы.Товары);
КонецЕсли;
КонецПроцедуры // ИзменениеСтрокиПрограммное()
// Процедура вызывается для обработки программного удалениия строки.
//
// Параметры
// СтрокаТабличнойЧасти — строка ТЧ «Товары», которую нужно удалить.
//
Процедура УдалениеСтрокиПрограммное(СтрокаТабличнойЧасти) Экспорт
ЭлементыФормы.Товары.ТекущаяСтрока = СтрокаТабличнойЧасти;
ПередУдалениемТовары(ЭлементыФормы.Товары, Ложь);
Товары.Удалить(СтрокаТабличнойЧасти);
ПослеУдаленияТовары(ЭлементыФормы.Товары);
КонецПроцедуры // УдалениеСтрокиПрограммное()
// Функция формирует структуру параметров для поиска по строке контактного лица контрагента.
//
// Параметры
// НЕТ
//
// Возвращаемое значение:
// Структура имен и значений параметров
//
Функция ПолучитьСтруктуруПараметровПоискаПоСтроке()
СтруктураПараметров = Новый Структура;
Если ЗначениеЗаполнено(Контрагент) Тогда
СтруктураПараметров.Вставить(«Владелец», Контрагент);
КонецЕсли;
Возврат СтруктураПараметров;
КонецФункции // ПолучитьСтруктуруПараметровПоискаПоСтроке()()
// Процедура выполняет необходимые действия при изменении договора взаиморасчетов
// с контрагентом.
//
Процедура ПриИнтерактивномИзмененииДоговора()
ПриИзмененииДоговора();
МеханизмНумерацииОбъектов.ОбновитьПодсказкуКодНомерОбъекта(ЭтотОбъект.Метаданные(), ЭлементыФормы.ДействияФормы.Кнопки.Подменю, ЭлементыФормы.Номер);
РаботаСДиалогами.СформироватьНадписьДолга(ДоговорКонтрагента, Ссылка, ЭлементыФормы.ИнфНадписьДолга, , Истина);
УстановитьЗаголовкиПоДоговору();
// Услуги на комиссию не отдаем.
мВидимостьЗакладкиУслуг = ДоговорКонтрагента.ВидДоговора <> Перечисления.ВидыДоговоровКонтрагентов.СКомиссионером;
УстановитьВидимость();
мТекущийДоговорКонтрагента = ДоговорКонтрагента;
КонецПроцедуры // ПриИнтерактивномИзмененииДоговора()
// Функция формирует список запросов для передачи в форму подбора.
//
// Параметры:
// ТабличнаяЧасть — табличная часть, для подбора в которую формируется список запросов.
//
// Возвращаемое значение:
// Список значений — список запросов.
//
Функция СформироватьСписокЗапросовДляПодбора(ТабличнаяЧасть)
СписокЗапросов = Новый СписокЗначений();
СписокЗапросов.Добавить(,»По справочнику»);
Если ТабличнаяЧасть = Товары
ИЛИ ТабличнаяЧасть = ВозвратнаяТара Тогда
СписокЗапросов.Добавить(«ОстаткиНоменклатуры», «По остаткам номенклатуры»);
Если ЗначениеЗаполнено(ТипЦен) ИЛИ (ЗначениеЗаполнено(ДоговорКонтрагента) И ДоговорКонтрагента.ВидУсловийДоговора = Перечисления.ВидыУсловийДоговоровВзаиморасчетов.СДополнительнымиУсловиями) Тогда
СписокЗапросов.Добавить(«РасходОстаткиИЦеныНоменклатуры», «По остаткам и ценам номенклатуры»);
СписокЗапросов.Добавить(«РасходЦеныНоменклатуры», «По ценам номенклатуры»);
КонецЕсли;
ИначеЕсли ТабличнаяЧасть = Услуги Тогда
СписокЗапросов.Добавить(«РасходУслуги», «По услугам предприятия»);
Если ЗначениеЗаполнено(ТипЦен) ИЛИ (ЗначениеЗаполнено(ДоговорКонтрагента) И ДоговорКонтрагента.ВидУсловийДоговора = Перечисления.ВидыУсловийДоговоровВзаиморасчетов.СДополнительнымиУсловиями) Тогда
СписокЗапросов.Добавить(«РасходЦеныУслуг», «По ценам и услугам предприятия»);
КонецЕсли;
КонецЕсли;
Возврат СписокЗапросов;
КонецФункции // СформироватьСписокЗапросовДляПодбора()
// Процедура обновляет параметры в форме подбора, если она открыта.
//
// Параметры:
// Реквизит — измененный реквизит.
//
Процедура ОбновитьФормуПодбора(Реквизит)
РаботаСДиалогами.ОбновитьПараметрыИФормуПодбора(ЭтотОбъект, ЭтаФорма, Реквизит);
КонецПроцедуры // ОбновитьФормуПодбора()
// Процедура вызывает сервисный механизм для подбора номеклатуры в табличную часть.
//
// Параметры:
// ТабличнаяЧасть — табличная часть, в которую осуществляется подбор.
//
Процедура ДействиеПодбор(ТабличнаяЧасть)
Перем Команда, Валюта;
ЕстьЦена = мМожноМенятьЦенуВДокументе;
ЕстьСерия = ТабличнаяЧасть = Товары
И ЗначениеЗаполнено(ДоговорКонтрагента)
И ДоговорКонтрагента.ОбособленныйУчетТоваровПоЗаказамПокупателей
И мРезервироватьПоСериям
И (ЗначениеЗаполнено(СкладГруппа) и ТипЗнч(СкладГруппа)=Тип(«СправочникСсылка.Склады»));
СкрыватьХарактеристику = Ложь;
Валюта = ВалютаДокумента;
ПодбиратьУслуги = Ложь;
Если ТабличнаяЧасть = Товары Тогда
Команда = «ПодборВТабличнуюЧастьТовары»;
ИмяТабличнойЧасти = «Товары»;
ИначеЕсли ТабличнаяЧасть = Услуги Тогда
Команда = «ПодборВТабличнуюЧастьУслуги»;
ИмяТабличнойЧасти = «Услуги»;
СкрыватьХарактеристику = Истина;
ПодбиратьУслуги = Истина;
ИначеЕсли ТабличнаяЧасть = ВозвратнаяТара Тогда
Команда = «ПодборВТабличнуюЧастьВозвратнаяТара»;
ИмяТабличнойЧасти = «Тара»;
КонецЕсли;
СписокВидовПодбора = СформироватьСписокЗапросовДляПодбора(ТабличнаяЧасть);
ПредставлениеДок = Метаданные().Представление();
СтруктураПараметровПодбора = Новый Структура();
СтруктураПараметровПодбора.Вставить(«Команда» , Команда);
СтруктураПараметровПодбора.Вставить(«СписокВидовПодбора» , СписокВидовПодбора);
// Параметры запросов.
ВременнаяДатаРасчетов = ?(НачалоДня(Дата) = НачалоДня(ТекущаяДата()), Неопределено, Дата);
СтруктураПараметровПодбора.Вставить(«ДатаРасчетов» , ВременнаяДатаРасчетов);
СтруктураПараметровПодбора.Вставить(«Склад» , СкладГруппа);
СтруктураПараметровПодбора.Вставить(«ТипЦен» , ТипЦен);
СтруктураПараметровПодбора.Вставить(«ДоговорКонтрагента» , ДоговорКонтрагента);
СтруктураПараметровПодбора.Вставить(«Контрагент» , Контрагент);
СтруктураПараметровПодбора.Вставить(«Организация» , Организация);
СтруктураПараметровПодбора.Вставить(«ПодбиратьУслуги» , ПодбиратьУслуги);
СтруктураПараметровПодбора.Вставить(«СпособЗаполненияЦен» , Перечисления.СпособыЗаполненияЦен.ПоЦенамНоменклатуры);
СтруктураПараметровПодбора.Вставить(«ЕстьЦена» , ЕстьЦена);
СтруктураПараметровПодбора.Вставить(«ЕстьСерия» , ЕстьСерия);
СтруктураПараметровПодбора.Вставить(«ИспользоватьГруппуДоступности», Истина);
СтруктураПараметровПодбора.Вставить(«ВалютаДокумента» , Валюта);
СтруктураПараметровПодбора.Вставить(«СкрыватьХарактеристику» , СкрыватьХарактеристику);
СтруктураПараметровПодбора.Вставить(«Заголовок», «Подбор номенклатуры в документ » +
ПредставлениеДок + » № » + Номер + » (» + ИмяТабличнойЧасти + «)»);
СтруктураПараметровПодбора.Вставить(«УсловиеПродаж» , УсловиеПродаж);
РаботаСДиалогами.ОткрытьПодборНоменклатуры(ЭтаФорма, СтруктураПараметровПодбора, Метаданные());
КонецПроцедуры // ДействиеПодбор()
// Производит заполнение документа переданными из формы подбора данными.
//
// Параметры:
// ТабличнаяЧасть — табличная часть, в которую надо добавлять подобранную позицию номенклатуры;
// ЗначениеВыбора — структура, содержащая параметры подбора.
//
Процедура ОбработкаПодбора(ТабличнаяЧасть, ЗначениеВыбора) Экспорт
Перем Номенклатура;
Если РаботаСДиалогами.ПроверитьЧтоКачествоВСтруктуреПодбораНеУдовлетворяетУсловиямПодбора(ЗначениеВыбора,
Истина) Тогда
Возврат;
КонецЕсли;
// Получим параметры подбора из структуры подбора.
ЗначениеВыбора.Свойство(«Номенклатура», Номенклатура);
Если (ТабличнаяЧасть = Товары ИЛИ ТабличнаяЧасть = ВозвратнаяТара)
И Номенклатура.Услуга Тогда
Предупреждение(«В данном контексте услуги не подбираются!»);
Возврат;
ИначеЕсли ТабличнаяЧасть = Услуги И Не Номенклатура.Услуга Тогда
Предупреждение(«В данном контексте товары не подбираются!»);
Возврат;
КонецЕсли;
СтрокаТабличнойЧасти = ЗаполнитьТабличнуюЧастьИзПодбора(ТабличнаяЧасть, ЗначениеВыбора);
Если ТабличнаяЧасть = Товары Тогда
Если СтрокаТабличнойЧасти.СерияНоменклатуры <> Справочники.СерииНоменклатуры.ПустаяСсылка() Тогда
СтрокаТабличнойЧАсти.Размещение = СкладГруппа;
КонецЕсли;
КонецЕсли;
Если (ТабличнаяЧасть = Товары
ИЛИ ТабличнаяЧасть = Услуги) Тогда
РаботаСДиалогами.СформироватьНадписьИтоговоеОтклонениеОтПлановойСебестоимости(ЭлементыФормы.ИнфНадписьИтоговоеОтклонениеОтПлановойСебестоимости, ЭтотОбъект);
КонецЕсли;
ТабличнаяЧастьИмя = ?(ТабличнаяЧасть = Товары, «Товары»,»ВозвратнаяТара»);
ЭлементыФормы[ТабличнаяЧастьИмя].ТекущаяСтрока = СтрокаТабличнойЧасти;
ЭлементыФормы[ТабличнаяЧастьИмя].ТекущаяКолонка = ЭлементыФормы[ТабличнаяЧастьИмя].Колонки[«Количество»];
КонецПроцедуры // ОбработкаПодбора()
// Производит заполнение и установку необходимых полей при изменении характеристики товара в табличной части.
//
Процедура ПриИзмененииХарактеристикиНоменклатурыТоваров(СтрокаТабличнойЧасти)
// Заполняем реквизиты табличной части.
ОбработкаТабличныхЧастей.ЗаполнитьЕдиницуЦенуПродажиТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект, мВалютаРегламентированногоУчета);
// Состав набора зависит от его характеристики.
УправлениеЗапасами.ДобавитьСоставНабора(СтрокаТабличнойЧасти, ЭтотОбъект);
КонецПроцедуры // ПриИзмененииХарактеристикиНоменклатурыТоваров()
// Обновляет текущее значение учетной политики розничная торговля облагается ЕНВД.
//
Процедура ПриИзмененииОблагаетсяЕНВД(РежимВызова = «»)
Если НЕ ЗначениеЗаполнено(РежимВызова) Тогда
мОрганизацияЯвляетсяПлательщикомЕНВД = ОбщегоНазначения.УчетнаяПолитикаНалоговыйУчет(«ОрганизацияЯвляетсяПлательщикомЕНВД», Организация, Дата);
мТекущаяОрганизация = Организация;
Иначе
РаботаСДиалогами.ПриИзмененииОрганизацияЯвляетсяПлательщикомЕНВД(ЭтотОбъект, РежимВызова, Услуги,
мОрганизацияЯвляетсяПлательщикомЕНВД, мТекущаяОрганизация);
КонецЕсли;
КонецПроцедуры // ПриИзмененииОблагаетсяЕНВД()
Процедура ОбработкаВыбораЗаполненияТабличнойЧастиИзТабличногоДокумента(ЗначениеВыбора)
ТабличнаяЧасть = ЭтотОбъект[ЗначениеВыбора.ИмяТабличнойЧасти];
ТабличнаяЧасть.Очистить();
Для каждого Строка Из ЗначениеВыбора.ТаблицаДанных Цикл
СтрокаТабличнойЧасти = ТабличнаяЧасть.Добавить();
СтрокаТабличнойЧасти.Номенклатура = Строка.Номенклатура;
СтрокаТабличнойЧасти.Количество = Строка.Количество;
Если ЗначениеВыбора.ИмяТабличнойЧасти = «Товары» Тогда
ПриИзмененииНоменклатурыТоваров(СтрокаТабличнойЧасти);
ОбработкаТабличныхЧастей.РассчитатьКоличествоМестТабЧасти(СтрокаТабличнойЧасти, ДокументОбъект);
ИначеЕсли ЗначениеВыбора.ИмяТабличнойЧасти = «ВозвратнаяТара» Тогда
// Выполнить общие действия для всех документов при изменении возвратной тары.
ОбработкаТабличныхЧастей.ПриИзмененииВозвратнойТарыТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);
// Заполнить реквизиты табличной части.
ОбработкаТабличныхЧастей.ЗаполнитьЦенуВозвратнойТарыТабЧастиПоступление(СтрокаТабличнойЧасти, ЭтотОбъект, мВалютаРегламентированногоУчета);
// Рассчитать реквизиты табличной части.
ОбработкаТабличныхЧастей.РассчитатьСуммуВозвратнойТарыТабЧасти(СтрокаТабличнойЧасти, ЭтотОбъект);
КонецЕсли;
КонецЦикла;
КонецПроцедуры // ОбработкаВыбораЗаполненияТабличнойЧастиИзТабличногоДокумента()
// Очищает значение реквизита в табличных частях «Товары», «Возвратная тара».
//
Процедура ОчиститьРеквизитВТабличнойЧасти(ТабличнаяЧасть, ИмяРеквизита)
// Очистим значения в строках
Для Каждого Строка Из ТабличнаяЧасть Цикл
Строка[ИмяРеквизита] = Неопределено;
КонецЦикла;
КонецПроцедуры
// Процедура очищает колонку «Размещение» табличной части.
//
Процедура ОчиститьРазмещениеВТабличнойЧасти(ТабличнаяЧасть)
ОчиститьРеквизитВТабличнойЧасти(ТабличнаяЧасть, «Размещение»);
Если ТабличнаяЧасть = Товары Тогда
Если мКолонкиТовары.СерияНоменклатуры.Видимость Тогда
ОчиститьРеквизитВТабличнойЧасти(ТабличнаяЧасть, «СерияНоменклатуры»);
КонецЕсли;
ТабличнаяЧасть.Свернуть(«Номенклатура, ХарактеристикаНоменклатуры, Цена, СтавкаНДС, ЕдиницаИзмерения, ЕдиницаИзмеренияМест, Коэффициент, ПроцентСкидкиНаценки, ПроцентАвтоматическихСкидок, УсловиеАвтоматическойСкидки, ЗначениеУсловияАвтоматическойСкидки, ПлановаяСебестоимость, КлючСтроки», «Количество, КоличествоМест, Сумма, СуммаНДС»);
ИначеЕсли ТабличнаяЧасть = ВозвратнаяТара Тогда
ТабличнаяЧасть.Свернуть(«Номенклатура, Цена», «Количество, Сумма»);
КонецЕсли;
КонецПроцедуры
// Выполняет необходимые действия при изменении вида склада.
//
Процедура ПриИзмененииВидаСклада()
// Определим текущий вид склада
Если ЗначениеЗаполнено(СкладГруппа)
И ТипЗнч(СкладГруппа) = Тип(«СправочникСсылка.Склады») Тогда
ВидСклада = СкладГруппа.ВидСклада;
Иначе
ВидСклада = Перечисления.ВидыСкладов.Оптовый;
КонецЕсли;
// Оформление колонок таблицы
ФлагАвтоОтметкиНезаполненого = Истина;
Если (ВидСклада = Перечисления.ВидыСкладов.Оптовый ИЛИ НЕ ЗначениеЗаполнено(ВидСклада)) И мРазрешитьНулевыеЦеныВОпте Тогда
ФлагАвтоОтметкиНезаполненого = Ложь;
ИначеЕсли ВидСклада = Перечисления.ВидыСкладов.Розничный И мРазрешитьНулевыеЦеныВРознице Тогда
ФлагАвтоОтметкиНезаполненого = Ложь;
КонецЕсли;
мКолонкиТовары.Сумма.АвтоОтметкаНезаполненного = ФлагАвтоОтметкиНезаполненого;
мКолонкиТовары.Цена.АвтоОтметкаНезаполненного = ФлагАвтоОтметкиНезаполненого;
мКолонкиВозвратнаяТара.Сумма.АвтоОтметкаНезаполненного = ФлагАвтоОтметкиНезаполненого;
мКолонкиВозвратнаяТара.Цена.АвтоОтметкаНезаполненного = ФлагАвтоОтметкиНезаполненого;
КонецПроцедуры // ПриИзмененииВидаСклада()
////////////////////////////////////////////////////////////////////////////////
// ПРОЦЕДУРЫ И ФУНКЦИИ ДЛЯ УПРАВЛЕНИЯ ВНЕШНИМ ВИДОМ ФОРМЫ
// Устанавливает соответстующие свойства поля ввода цены при изменении
// номенклатуры в текущей строке табличной части.
//
// Параметры:
// Номенклатура — ссылка на справочник, элемент номенклатуры, для которого будем устанавливать цену
//
Процедура УстановитьСвойстваПоляВводаЦены()
ТекущаяСтрока = ЭлементыФормы.Товары.ТекущиеДанные;
ЭлементУправления = мКолонкиТовары.Цена.ЭлементУправления;
ЭлементУправления.КнопкаСпискаВыбора = Ложь;
КонецПроцедуры // УстановитьСвойстваПоляВводаЦены()
// Процедура устанавливает доступность кнопки «Заполнить и провести». Кнопка доступна,
// если документ — внешний заказ, его дата совпадает с текущей и установлен хотя бы один
// из флагов Авторазмещение или Авторезервирование.
//
// Параметры:
// Нет.
//
Процедура УстановитьДоступностьКнопкиЗаполнитьИПровести()
ЭлементыФормы.ДействияФормы.Кнопки.ПодменюЗаполнитьИПровести.Доступность =
НачалоДня(Дата) = НачалоДня(ТекущаяДата());
КонецПроцедуры // УстановитьДоступностьКнопкиЗаполнитьИПровести
// Процедура устанавливает доступность кнопки «СоздатьРеализацию». Кнопка доступна,
// если документ уже был записан.
//
// Параметры:
// Нет.
//
Процедура УстановитьДоступностьКнопкиДействиеСоздатьРеализацию()
ДоступностьСозданияРеализации = НЕ Модифицированность() И не ЭтаФорма.ТолькоПросмотр;
ЭлементыФормы.ДействияФормы.Кнопки.ДействиеСоздатьРеализацию.Доступность = ДоступностьСозданияРеализации;
КонецПроцедуры // УстановитьДоступностьКнопкиДействиеСоздатьРеализацию()
// Процедура устанавливает видимость для тех колонок в табличной части
// «Товары», видимость которых определяется реквизитами документа.
//
// Параметры:
// Нет.
//
Процедура УстановитьВидимость()
// Колонки налога показываем только тогда, когда его учитываем.
Если УчитыватьНДС <> мКолонкиТовары.СтавкаНДС.Видимость Тогда
ОбработкаТабличныхЧастей.УстановитьВидимостьКолонкиТабЧасти(мКолонкиТовары.СтавкаНДС, УчитыватьНДС);
КонецЕсли;
Если УчитыватьНДС <> мКолонкиТовары.СуммаНДС.Видимость Тогда
ОбработкаТабличныхЧастей.УстановитьВидимостьКолонкиТабЧасти(мКолонкиТовары.СуммаНДС, УчитыватьНДС);
КонецЕсли;
Если УчитыватьНДС <> мКолонкиУслуги.СтавкаНДС.Видимость Тогда
ОбработкаТабличныхЧастей.УстановитьВидимостьКолонкиТабЧасти(мКолонкиУслуги.СтавкаНДС, УчитыватьНДС);
КонецЕсли;
Если УчитыватьНДС <> мКолонкиУслуги.СуммаНДС.Видимость Тогда
ОбработкаТабличныхЧастей.УстановитьВидимостьКолонкиТабЧасти(мКолонкиУслуги.СуммаНДС, УчитыватьНДС);
КонецЕсли;
// Управление доступностью элементов формы в зависимости от вида операции
КнопкиКоманднойПанели = ЭлементыФормы.ДействияФормы.Кнопки;
ТолькоПросмотр = ЭтаФорма.ТолькоПросмотр;
//для кнопок с неустановленным признаком «ИзменяетДанные» явно установим доступность
//для кнопок Анализ и СоздатьРеализацию — есть отдельная логика, которая зависит еще и от других параметров
КнопкиКоманднойПанели.Файлы1.Доступность = не ТолькоПросмотр;
Если ЭлементыФормы.ОсновнаяПанель.Страницы.Тара.Доступность Тогда
ЭлементыФормы.ОсновнаяПанель.Страницы.Тара.Видимость = мИспользоватьТару;
КонецЕсли;
ОбособленныйУчет = ЗначениеЗаполнено(ДоговорКонтрагента) И
ДоговорКонтрагента.ОбособленныйУчетТоваровПоЗаказамПокупателей;
ВидимостьСерии = мРезервироватьПоСериям И ОбособленныйУчет;
ОбработкаТабличныхЧастей.УстановитьВидимостьКолонкиТабЧасти(мКолонкиТовары.СерияНоменклатуры, ВидимостьСерии);
мКолонкиТовары.Размещение.ИзменятьВидимость = истина;
ЭлементыФормы.ОсновнаяПанель.Страницы.Услуги.Видимость = мВидимостьЗакладкиУслуг;
КонецПроцедуры // УстановитьВидимость()
// Процедура устанавливает заголовки по выбранному договору для:
// — элемента формы НадписьСуммаВзаиморасчетов.
//
// Параметры:
// Нет.
//
Процедура УстановитьЗаголовкиПоДоговору()
РаботаСДиалогами.УстановитьНадписьСуммыВзаиморасчетов(ЭтотОбъект, ЭтаФорма);
КонецПроцедуры // УстановитьЗаголовкиПоДоговору()
// Процедура формирует текст в информационной надписи об итогах документа.
//
// Параметры:
// Нет.
//
Процедура ОбновитьПодвал()
// При изменении данных обновим суммы в подвале.
СуммаВсего = ПолучитьСуммуСНДС();
СуммаВсегоНДС = ПолучитьСуммуНДС();
ЭлементыФормы.Всего.Значение = ОбщегоНазначения.ФорматСумм(СуммаВсего);
ЭлементыФормы.ВсегоНДС.Значение = ОбщегоНазначения.ФорматСумм(СуммаВсегоНДС);
//+
СуммаВсегоТовары = ПолучитьСуммуСНДСТовары();
ВсегоНДСТовары = ПолучитьСуммуНДСТовары();
ЭлементыФормы.ВсегоТовары.Значение = ОбщегоНазначения.ФорматСумм(СуммаВсегоТовары);
ЭлементыФормы.ВсегоНДСТовары.Значение = ОбщегоНазначения.ФорматСумм(ВсегоНДСТовары);
СуммаВсегоМатериалы = ПолучитьСуммуСНДСМатериалы();
ВсегоНДСМатериалы = ПолучитьСуммуНДСМатериалы();
ЭлементыФормы.ВсегоМатериалы.Значение = ОбщегоНазначения.ФорматСумм(СуммаВсегоМатериалы);
ЭлементыФормы.ВсегоНДСМатериалы.Значение = ОбщегоНазначения.ФорматСумм(ВсегоНДСМатериалы);
СуммаВсегоУслуги = ПолучитьСуммуСНДСУслуги();
ВсегоНДСУслуги = ПолучитьСуммуНДСУслуги();
ЭлементыФормы.ВсегоУслуги.Значение = ОбщегоНазначения.ФорматСумм(СуммаВсегоУслуги);
ЭлементыФормы.ВсегоНДСУслуги.Значение = ОбщегоНазначения.ФорматСумм(ВсегоНДСУслуги);
//-
ВременнаяСтрока = «»;
Если (ЗначениеЗаполнено(ДокументОбъект.ВалютаДокумента))
И (ДокументОбъект.ВалютаДокумента <> мВалютаРегламентированногоУчета) Тогда
ВременнаяСтрока = ВременнаяСтрока + ЗаполнениеДокументов.КратностьДокумента(ДокументОбъект, мВалютаРегламентированногоУчета) + ДокументОбъект.ВалютаДокумента
+ » = » + ЗаполнениеДокументов.КурсДокумента(ДокументОбъект, мВалютаРегламентированногоУчета)
+ мВалютаРегламентированногоУчета + «, «;
КонецЕсли;
Если ЗначениеЗаполнено(ДокументОбъект.ТипЦен) Тогда
ВременнаяСтрока = ВременнаяСтрока + «Тип цен: » + ДокументОбъект.ТипЦен;
Иначе
ВременнаяСтрока = ВременнаяСтрока + «Тип цен: Не заполнено!»;
КонецЕсли;
Если ЗначениеЗаполнено(ДокументОбъект.УсловиеПродаж) Тогда
ВременнаяСтрока = ВременнаяСтрока + «, Условие продаж: » + ДокументОбъект.УсловиеПродаж;
КонецЕсли;
ЭлементыФормы.ИнфНадписьТоварыИтоги.Заголовок = ВременнаяСтрока;
Если НЕ ЗначениеЗаполнено(ДокументОбъект.ВалютаДокумента) Тогда
ЭлементыФормы.НадписьВсего.Заголовок = «Всего (<>):»;
Иначе
ЭлементыФормы.НадписьВсего.Заголовок = «Всего (» + СокрЛП(ДокументОбъект.ВалютаДокумента) +»):»;
КонецЕсли;
//+
Если НЕ ЗначениеЗаполнено(ДокументОбъект.ВалютаДокумента) Тогда
ЭлементыФормы.НадписьВсегоТовары.Заголовок = «Всего товары (<>):»;
Иначе
ЭлементыФормы.НадписьВсегоТовары.Заголовок = «Всего товары (» + СокрЛП(ДокументОбъект.ВалютаДокумента) +»):»;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ДокументОбъект.ВалютаДокумента) Тогда
ЭлементыФормы.НадписьВсегоМатериалы.Заголовок = «Всего материалы (<>):»;
Иначе
ЭлементыФормы.НадписьВсегоМатериалы.Заголовок = «Всего материалы (» + СокрЛП(ДокументОбъект.ВалютаДокумента) +»):»;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ДокументОбъект.ВалютаДокумента)
27 — 17.09.15 — 18:06
(25) что делать то?
28 — 17.09.15 — 18:06
думаю можно через тимвювер показать
29 — 17.09.15 — 18:24
(28) так в чем причина?
daniel63
30 — 17.09.15 — 18:37
в скайп alexuryn пишите, покажу как увидеть ошибку.