Построитель-Ошибка -(Текст) |
Я |
11.08.06 — 18:22
Постановка:
1. Текст запроса Построителя в модуле объекта
2. В модуле формы наращиваю запрос (условия)
При ПОВТОРНОМ «Сформировать» имею:
Ошибка при установке значения атрибута контекста (Текст)
Помогите….дереву дремучему
1 — 11.08.06 — 18:25
Неправильный код значит, в коде ищи ошибку
2 — 11.08.06 — 18:47
Краткость не удалась(таланту нет)
ТЕКСТ В модуле
Построитель.Текст =
«ВЫБРАТЬ
| Продажи.Номенклатура,
| Продажи.Регистратор,
| Продажи.Количество КАК Количество,
| Продажи.Стоимость КАК СУММА,
| Продажи.ДокументПродажи.Контрагент,
| Продажи.ДокументПродажи.Дата,
| Продажи.ДокументПродажи.Номер
|ИЗ
| РегистрНакопления.Продажи КАК Продажи
|ГДЕ
| Продажи.ДокументПродажи.Проведен
| И Продажи.Период > &НачПериода
| И Продажи.Период < &КонПериода
|»;
текст в форме:
Если ЗначениеНеЗаполнено(ВводНоменклатура) Тогда
Предупреждение («НЕ указана Номенклатура»);
Иначе
Построитель.Текст = Построитель.Текст + »
| И Продажи.Номенклатура = &Номенклатура
|ИТОГИ
| СУММА(Количество)
|ПО
| ОБЩИЕ
|»;
при первом «Сформировать» очень хорошо выполняет
а при ПОВТОРНОМ
тыкает в форму на строчку
Построитель.Текст = Построитель.Текст + »
| И Продажи.Номенклатура = &Номенклатура
воть…
ЗЫ. Это я про 8-ку писала, но ловкость рук…… можно перенести?
3 — 11.08.06 — 18:55
И сколько раз ты собираешься наращивать текст построителя?
4 — 11.08.06 — 19:00
Есть ограничения?
когда я делала этот отчет НЕ Построителем… вопроса не возникала…
а мне Построитель нравится… как обойти ошибку, а?
5 — 11.08.06 — 19:02
Что, ты больше одного раза добавляла
| И Продажи.Номенклатура = &Номенклатура
|ИТОГИ
| СУММА(Количество)
|ПО
| ОБЩИЕ
|»;
и у тебя все работало?!
6 — 11.08.06 — 19:10
да
текст запроса был в форме
и в начале стояло
Процедура КнопкаСформироватьНажатие(Кнопка)
Запрос = Новый Запрос;
…..
чудненьк Фсё получалось…
7 — 11.08.06 — 19:23
Мда, может я конечно ошибаюсь, но все-таки женщинам как правило лучше не заниматься программированием, мозг у них как-то по другому устроен :o)
Строка
Запрос = Новый Запрос;
создает НОВЫЙ объект, у которого НИКАКОГО текста еще нет, поэтому текст запроса ессно НЕ наращивается
а Построитель.Текст = …
НЕ создает нового объекта, а поэтому его текст после первого прибавления второй раз уже работать не будет :o)
8 — 11.08.06 — 19:27
Это ты, конечно, верно подметил… про мозги… ЗАЧЕМ по твоему я тебе эту строчку написала?!
переведу вопрос
КАК ТАКОЕ НАПИСАТЬ С ПОСТРОИТЕЛЕМ
9 — 11.08.06 — 19:30
(8) Очень просто. Например так.
Если ЗначениеНеЗаполнено(ВводНоменклатура) Тогда
Предупреждение («НЕ указана Номенклатура»);
Возврат;
КонецЕсли;
Построитель.Текст =
«ВЫБРАТЬ
| Продажи.Номенклатура,
| Продажи.Регистратор,
| Продажи.Количество КАК Количество,
| Продажи.Стоимость КАК СУММА,
| Продажи.ДокументПродажи.Контрагент,
| Продажи.ДокументПродажи.Дата,
| Продажи.ДокументПродажи.Номер
|ИЗ
| РегистрНакопления.Продажи КАК Продажи
|ГДЕ
| Продажи.ДокументПродажи.Проведен
| И Продажи.Период > &НачПериода
| И Продажи.Период < &КонПериода
| И Продажи.Номенклатура = &Номенклатура
|ИТОГИ
| СУММА(Количество)
|ПО
| ОБЩИЕ
|»;
10 — 11.08.06 — 19:33
если не задана Номенклатура нужно вывести ВСЁ а если задана, то по конкретной позиции…
11 — 11.08.06 — 19:36
Наташа, вы меня извините, но я бы вам порекомендовал срочно подучиться или чем-нить другим заняться :o)
Без обид, просто констатация факта :o)
Если ЗначениеНеЗаполнено(ВводНоменклатура) Тогда
Предупреждение («НЕ указана Номенклатура»);
Построитель.Текст =
«ВЫБРАТЬ
| Продажи.Номенклатура,
| Продажи.Регистратор,
| Продажи.Количество КАК Количество,
| Продажи.Стоимость КАК СУММА,
| Продажи.ДокументПродажи.Контрагент,
| Продажи.ДокументПродажи.Дата,
| Продажи.ДокументПродажи.Номер
|ИЗ
| РегистрНакопления.Продажи КАК Продажи
|ГДЕ
| Продажи.ДокументПродажи.Проведен
| И Продажи.Период > &НачПериода
| И Продажи.Период < &КонПериода
|»;
Иначе
Построитель.Текст =
«ВЫБРАТЬ
| Продажи.Номенклатура,
| Продажи.Регистратор,
| Продажи.Количество КАК Количество,
| Продажи.Стоимость КАК СУММА,
| Продажи.ДокументПродажи.Контрагент,
| Продажи.ДокументПродажи.Дата,
| Продажи.ДокументПродажи.Номер
|ИЗ
| РегистрНакопления.Продажи КАК Продажи
|ГДЕ
| Продажи.ДокументПродажи.Проведен
| И Продажи.Период > &НачПериода
| И Продажи.Период < &КонПериода
| И Продажи.Номенклатура = &Номенклатура
|ИТОГИ
| СУММА(Количество)
|ПО
| ОБЩИЕ
|»;
КонецЕсли;
12 — 11.08.06 — 19:37
Я как раз учусь
13 — 11.08.06 — 19:39
(12) Тогда вы рано начали задавать вопросы на форуме, такую элементарщину нужно читать в ЖКК (документация) и на дисках ИТС.
А вообще лучшая школа — это 1С франчайзи, устройтесь в какой-нить, там научат :o)
14 — 11.08.06 — 19:42
малиновые штаны? ну тогда
КУуууу
15 — 11.08.06 — 19:48
(14) Нет, просто подсказки на форуме как правило ничему не учат, люди через минуту забывают то, что им сказали, потому что они НЕ ПОНИМАЮТ этого, они просто тупо переписывают код, который им написали :o)
Да и почему в среде одинэсников считается, что прочитать несколько жалких книжек — себя не уважать и всегда успеется? Почему бы не потратить месяц на самообучение?
16 — 11.08.06 — 19:52
Я форум очень внимательно читаю (и перечитываю) и ссылку твою по Построителю распечатала и N-ского захода прониклась
но другой литературы кроме ПС и твоей статьи где бы для «особенных Ламеров» ( к коим я себя отношу) нет.
поэтому решила спросить
17 — 11.08.06 — 20:00
и это……
ТВОЙ ПРИМЕР не работает
и не потому, что я чего то не понимаю….
18 — 11.08.06 — 20:05
(17) Если он не работает, то он не у меня не работает, так как я всего лишь показал принцип, верность текста запроса я ессно не проверял, как я могу его проверить :o)
19 — 14.08.06 — 12:13
Прочитав еще раз ТВОЙ трактат таки сдела..
НО (учитывая, что мозг мой женский) не стала плодить как ты предлагал запросы а упрямо нарашиваю имеющийся
всё работает. ты был прав (конечно прав) не имеет значение где в модуле или в форме.
20 — 14.08.06 — 12:16
Про женщин в (7) не согласен. Видел множество мужских примеров, куда более вопиющих.
21 — 14.08.06 — 14:10
(20) Из всякого правила…
22 — 14.08.06 — 14:12
(19) Поздравляю.
Хотя, если запрос не наращивается, а один раз делается либо таким, либо таким (а так и есть, судя по твоим постам), то мне кажется более логичным задание его одним блоком, хотя бы потому, что его можно редактировать в конструкторе
23 — 14.08.06 — 14:14
Построитель.Текст = "ВЫБРАТЬ | Продажи.Номенклатура, | Продажи.Регистратор, | Продажи.Количество КАК Количество, | Продажи.Стоимость КАК СУММА, | Продажи.ДокументПродажи.Контрагент, | Продажи.ДокументПродажи.Дата, | Продажи.ДокументПродажи.Номер |ИЗ | РегистрНакопления.Продажи КАК Продажи |ГДЕ | Продажи.ДокументПродажи.Проведен | И Продажи.Период > &НачПериода | И Продажи.Период < &КонПериода |{ |ГДЕ | Продажи.Номенклатура КАК Номенклатура |} |ИТОГИ | СУММА(Количество) |ПО | ОБЩИЕ |"; ЭлОтбора = Построитель.Отбор.Добавить("Номенклатура"); ЭлОтбора.Значение = ВводНоменклатура; ЭлОтбора.Использование = НЕ ЗначениеНеЗаполнено(ВводНоменклатура);
24 — 14.08.06 — 20:33
(23)
Красиво как получается.
Спасибо.
25 — 16.08.06 — 14:08
Эх…. признаю…. туплю…. ну туплю! Что тут сказать?
По порядку.
ПостроительОтчета является реквизитом отчета
На форме сделала табличное поле
Данные:ПостроительОтчета.Порядок
тип значения: Порядок
(тест запроса находится в Форме)
не работает (не добавить, не изменить)
Построитель = Новый ПостроительОтчета;
Построитель.Текст =
«ВЫБРАТЬ
| Продажи.Номенклатура,
| Продажи.Регистратор,
| Продажи.Количество КАК Количество,
| Продажи.Стоимость КАК СУММА,
| Продажи.ДокументПродажи.Контрагент,
| Продажи.ДокументПродажи.Дата,
| Продажи.ДокументПродажи.Номер,
| Продажи.Регистратор.Ответственный.Ссылка
|{ВЫБРАТЬ
| Номенклатура.*,
| Регистратор.*,
| Количество,
| СУММА,
| ДокументПродажиКонтрагент.*,
| ДокументПродажиДата КАК ДокументПродажиДата,
| ДокументПродажиНомер,
| РегистраторОтветственныйСсылка.*}
|ИЗ
| РегистрНакопления.Продажи КАК Продажи
|ГДЕ
| Продажи.ДокументПродажи.Проведен
| И Продажи.Период > &НачПериода
| И Продажи.Период < &КонПериода
|{ГДЕ
| Продажи.Номенклатура КАК Номенклатура,
| Продажи.Регистратор.Ответственный.Ссылка КАК Менеджер}
|{УПОРЯДОЧИТЬ ПО
| ДокументПродажиНомер,
| ДокументПродажиДата,
| ДокументПродажиКонтрагент.*,
| СУММА,
| Количество}
|ИТОГИ
| СУММА(Количество)
|ПО
| ОБЩИЕ
|{ИТОГИ ПО
| СУММА}»;
Построитель.ЗаполнитьНастройки();
Построитель.Параметры.Вставить(«НачПериода», НачПериода );
Построитель.Параметры.Вставить(«КонПериода», КонПериода );
Построитель.Параметры.Вставить(«Номенклатура», ВНоменклатура);
ЭлОтбора = Построитель.Отбор.Добавить(«Номенклатура»);
ЭлОтбора.Значение = ВНоменклатура;
ЭлОтбора.Использование = НЕ ЗначениеНеЗаполнено(ВНоменклатура);
…..
26 — 17.08.06 — 12:48
УРА!!!!!!!!!!
сняла с тормоза!!!
(26) Поздравляю :))
Содержание:
1. Ошибка при установке значения атрибута контекста
2. Ошибка при получении значения атрибута контекста
Одной из наиболее частых ошибок исполнения кода 1С являются ошибки, связанные с установкой реквизита либо получением реквизита через точку, либо ошибка при вызове функции или процедуры через точку. Все данные объекты являются атрибутами информационных объектов-владельцев, к которым они принадлежат. Рассмотрим примеры таких ошибок и причины их возникновения.
1. Ошибка при установке значения атрибута контекста
Ошибка при установке значения атрибута контекста говорит нам о невозможности присвоить выбранное значение определенному атрибуту информационного объекта. Вызвано это либо несовпадением типа атрибута и присваиваемого ей значения, отсутствием возможности присвоить значение выбранному атрибуту, так как его можно только читать, но не записывать в него, отсутствием прав у текущего пользователя на запись значений в данный атрибут. Например, в реквизит «ДатаДокумента» с типом «Дата» пытаемся записать строку, в реквизит с типом данных ссылки на документ пытаемся записать не ссылку, а объект, полученный по ссылке, что невозможно из-за несоответствия типов, что приводит к ошибке установки значения атрибута.
Другой пример – проходя циклом выборку запроса, пытаемся в колонку выборки записать значение, что невозможно, так как значения выборки запроса можно только считывать, а для того, чтобы можно было полученные из запроса данные изменять в коде, нужно пользоваться не выборкой, а выгружать результат запроса в таблицу значений, в таком случае в цикле по ней можно будет менять значения в колонках, но только на значения, соответствующие типу колонки. Либо у пользователя, под которым выполняется код, нет прав на изменение даты документа, при попытке записать в данный реквизит новую дату, будет выведено сообщение об ошибке установке значения, но в причине будет указано отсутствие прав у пользователя.
2. Ошибка при получении значения атрибута контекста
Ошибка при получении значения атрибута контекста указывает на невозможность прочитать значение атрибута объекта в силу его отсутствия, либо отсутствия прав на его чтение. Например, обращение к несуществующему реквизиту объекта, несуществующему полю выборки из запроса, несуществующему свойству элемента формы и т.п. Так же как пример можно рассмотреть получение текущего пользователя из параметров сеанса — если данный параметр сеанса не установлен, то тоже будет выведена ошибка получения значения атрибута контекста, но в причине будет указана попытка получения неинициализированного значения параметра сеанса.
При возникновении данных ошибок значения атрибута в 1Св первую очередь следует проверить существование атрибута, к которому обращаются, затем проверить совпадение типов значений атрибута и присваиваемого ему значения, затем уже проверить права на установку либо чтение значения. Проверить, является ли дело в правах либо дать права на действия с атрибутом, можно, установив привилегированный режим для совершения действия с данным атрибутом, прописав перед строчкой с ошибкой УстановитьПривилегированныйРежим(Истина), после строчки — УстановитьПривилегированныйРежим(Ложь).
Специалист компании «Кодерлайн»
Александр Суворов
8.2 Проблема с временной таблицей в постоителе
- Подписаться на тему
- Сообщить другу
- Скачать/распечатать тему
|
|
Делаю запрос для построителя:
ТаблицаПервичныхДанных = Новый ТаблицаЗначений; ТаблицаПервичныхДанных.Колонки.Добавить(«ДатаВизитаМесяцСтрокой», Новый ОписаниеТипов(«Строка»)); УниверсальныйОтчет.ПостроительОтчета.Параметры.Вставить(«ТаблицаПервичныхДанных», ТаблицаПервичныхДанных); ТекстЗапроса = « |ВЫБРАТЬ | * |ПОМЕСТИТЬ | ПервичнаяТаблица |ИЗ | &ТаблицаПервичныхДанных КАК ТаблицаПервичныхДанныхВрем |; | |…….»; УниверсальныйОтчет.ПостроительОтчета.Текст = ТекстЗапроса;
Вываливается сообщение: Что делать не соображу, нужно поместить данные в первичную таблицу из таблицы значений для выполнения запроса, как это ещё можно сделать? |
Outlander |
|
Таблица Первичных данных должна быть жестко типизирована |
lastlogic |
|
Цитата Outlander @ 22.08.12, 14:25 должна быть жестко типизирована Сделал так:
КС = Новый КвалификаторыСтроки(10); Массив = Новый Массив; Массив.Добавить(Тип(«Строка»)); ОписаниеТиповС = Новый ОписаниеТипов(Массив, , КС); ТаблицаПервичныхДанных = Новый ТаблицаЗначений; ТаблицаПервичныхДанных.Колонки.Добавить(«ДатаВизитаМесяцСтрокой», ОписаниеТиповС, «ДатаВизитаМесяцСтрокой», 10); Не помогло, также ошибка. |
Outlander |
|
Выбрать * в этом случае тоже не катит надо явно именовать поля |
0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
0 пользователей:
- Предыдущая тема
- 1С: Проблемы и решения
- Следующая тема
[ Script execution time: 0,0572 ] [ 15 queries used ] [ Generated: 6.06.23, 03:15 GMT ]
Anhel
Постоялец |
Доброго времени суток! Не могу понять что делаю не так, подскажите что не правильно: ТаблицаДанных = ТЗ.Скопировать(); Выдает ошибку: {ВнешнийОтчет.Доставки.МодульОбъекта(253)}: Ошибка при установке значения атрибута контекста (Текст) по причине: |
||
|
Kivals |
По-моему так делать нельзя — нужно идти через МенеджерВременныхТаблиц. Вот пример для простого запроса (без построителя): // Сформируем запрос |
||
|
Anhel
Постоялец |
Спасибо за ответ. Получается что построитель не может использовать внешние таблицы как ТЗ? |
||
|
Kivals |
Да нет — мне кажется может. Просто сначала их нужно поместить во временную таблицу простым запросом (ВЫБРАТЬ * ПОМЕСТИТЬ ВременнаяТаблица ИЗ &ТаблицаДанных КАК ТаблицаДанных), а уже потом использовать ее (временную таблицу) в основном запросе. |
||
|
Anhel
Постоялец |
Не хочет так работать, пробовали МенеджеромВрТаб и временной таблицей, внешним источником данных, ругается и все. |
||
|
Anhel
Постоялец |
Сделал отчет через макет табличного документа. |
||
|
Ошибка при установке значения атрибута контекста (СписокВыбора)
Данная ошибка возникает при попытке установить полю с типом «СписокЗначений» значение неподходящего типа. Например: Неопределено.
Полная ошибка
Ошибка при установке значения атрибута контекста (СписокВыбора)
ЭлементыФормы.Поставщик.СписокВыбора = КЭШируемые.СписокПоставщиков(Контрагент);
по причине:
Несоответствие типов
Скриншот:
Причина: В функции, которая формировала данный список (КЭШируемые.СписокПоставщиков()) отсутствовал возврат значения.
В экспериментальных целях:
передал значение с типом «Массив» — текст ошибки не поменялся.
В итоге переписал на более универсальный метод ЗагрузитьЗначения() самого элемента диалога:
ЭлементыФормы.Поставщик.СписокВыбора.ЗагрузитьЗначения(КЭШируемые.СписокПоставщиков(Контрагент));
Нулевую рекламную идею можно помножить на миллион долларов – все равно получится нуль.
Форум консультаций по прикладным решениям и программам фирмы «1С».
Онлайн консультации, вопросы и ответы, бесплатная регистрация, личная страница, twitter и facebook каналы и многое другое ждут Вас здесь.
Зарегистрироваться ← Ваш выбор → Войти на форум
-
Помогите пожалуйста начинающему пользователю Платформы 1С 8.2.
Вот такая проблемка
Процедура ОбработкаПроведения(Отказ, Режим)Движения.ОстаткиМатериалов.Записывать = Истина;
Движения.СтоимостьМатериалов.Записывать = Истина;
Движения.Продажи.Записывать = Истина;
Движения.Управленческий.Записывать = Истина;//Создать менеджер временных таблиц.
МенеджерВТ = Новый МенеджерВременныхТаблиц;Запрос = Новый Запрос;
//Укажем, какойменеджер временных таблиц использует этот запрос.
Запрос.МенеджерВременныхТаблиц = МенеджерВТ;Запрос.Текст =
«ВЫБРАТЬ
|ОказаниеУслугиПереченьНоменклатуры.Номенклатура,
|ОказаниеУслугиПереченьНоменклатуры.Номенклатура.ВидНоменклатуры КАК ВидНоменклатуры,
|ОказаниеУслугиПереченьНоменклатуры.НаборСвойств,
|СУММА(ОказаниеУслугиПереченьНоменклатуры.Количество) КАК КоличествоВДокументе,
|СУММА(ОказаниеУслугиПереченьНоменклатуры.Сумма) КАК СуммаВДокументе
|ПОМЕСТИТЬ НоменклатураДокумента
|ИЗ
|Документ.ОказаниеУслуги.ПереченьНоменклатуры КАК ОказаниеУслугиПереченьНоменклатуры
|ГДЕ
|ОказаниеУслугиПереченьНоменклатуры.Ссылка = &Ссылка
|
|СГРУППИРОВАТЬ ПО
|ОказаниеУслугиПереченьНоменклатуры.Номенклатура,
|ОказаниеУслугиПереченьНоменклатуры.Номенклатура.ВидНоменклатуры,
|ОказаниеУслугиПереченьНоменклатуры.НаборСвойств»;Запрос.УстановитьПараметр(«Ссылка», Ссылка);
Результат = Запрос.Выполнить();
Запрос2 = Новый Запрос;
Запрос2.МенеджерВременныхТаблиц = МенеджерВТ;
Запрос2.Текст = «ВЫБРАТЬ
|НоменклатураДокумента.Номенклатура,
|НоменклатураДокумента.ВидНоменклатуры,
|НоменклатураДокумента.НаборСвойств,
|НоменклатураДокумента.КоличествоВДокументе,
|НоменклатураДокумента.СуммаВДокументе,
|ЕСТЬNULL(СтоимостьМатериаловОстатки.СтоимостьОстаток, 0) КАК Стоимость,
|ЕСТЬNULL(ОстаткиМатериаловОстатки.КоличествоОстаток, 0) КАК Количество
|ИЗ
|НоменклатураДокумента КАК НоменклатураДокумента
|ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СтоимостьМатериалов.Остатки(
|,
|Материал В
|(ВЫБРАТЬ
|НоменклатураДокумента.Номенклатура
|ИЗ
|НоменклатураДокумента)) КАК СтоимостьМатериаловОстатки
|ПО НоменклатураДокумента.Номенклатура = СтоимостьМатериаловОстатки.Материал
|ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиМатериалов.Остатки(
|,
|Материал В
|(ВЫБРАТЬ
|НоменклатураДокумента.Номенклатура
|ИЗ
|НоменклатураДокумента)) КАК ОстаткиМатериаловОстатки
|ПО НоменклатураДокумента.Номенклатура = ОстаткиМатериаловОстатки.Материал»;//Установим необходимость блокировки данных в регистрах
//СтоимостьМатериалов и ОстаткиМатериалов.
Движения.СтоимостьМатериалов.БлокироватьДляИзменения = Истина;
Движения.ОстаткиМатериалов.БлокироватьДляИзменения = Истина;//Запишем пустые наборы записей, чтобы читать остатки без учета данных в документе.
Движения.СтоимостьМатериалов.Записать();
Движения.ОстаткиМатериалов.Записать();Результат = Запрос2.Выполнить();
//Если надо посмотреть результат запроса
//ТЗ = Результат.Выгрузить();ВыборкаДетальныеЗаписи = Результат.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Если ВыборкаДетальныеЗаписи.Количество = 0 Тогда
СтоимостьМатериала = 0;
Иначе СтоимостьМатериала = ВыборкаДетальныеЗаписи.Стоимость / ВыборкаДетальныеЗаписи.Количество;
КонецЕсли;Если ВыборкаДетальныеЗаписи.ВидНоменклатуры=Перечисления.ВидыНоменклатуры.Материал Тогда
//регистр ОстаткиМатериалов Расход
Движение = Движения.ОстаткиМатериалов.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Дата;
Движение.Материал = ВыборкаДетальныеЗаписи.Номенклатура;
Движение.НаборСвойств = ВыборкаДетальныеЗаписи.НаборСвойств;
Движение.Склад = Склад;
Движение.Количество = ВыборкаДетальныеЗаписи.КоличествоВДокументе;// регистр СтоимостьМатериалов Расход
Движение = Движения.СтоимостьМатериалов.Добавить();
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Период = Дата;
Движение.Материал = ВыборкаДетальныеЗаписи.Номенклатура;
Движение.Стоимость = ВыборкаДетальныеЗаписи.КоличествоВДокументе*СтоимостьМатериала;// Регистр Управленческий
// Первая проводка:Д 62 (ДебиторскаяЗадолженность) — К 90 (Капитал) Розничная сумма
Движение = Движения.Управленческий.Добавить();
Движение.СчетДт = ПланыСчетов.Основной.ДебиторскаяЗадолженность;
Движение.СчетКт = ПланыСчетов.Основной.Капитал;
Движение.Период = Дата;
Движение.Сумма = ВыборкаДетальныеЗаписи.СуммаВДокументе;
Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконто.Клиенты] = Клиент;
// Вторая проводка: Д 90 (Капитал) — К 41 (Товары) — себестоимость
Движение = Движения.Управленческий.Добавить();
Движение.СчетДт = ПланыСчетов.Основной.Капитал;
Движение.СчетКт = ПланыСчетов.Основной.Товары;
Движение.Период = Дата;
Движение.Сумма = СтоимостьМатериала*ВыборкаДетальныеЗаписи.КоличествоВДокументе;
Движение.КоличествоКт = ВыборкаДетальныеЗаписи.КоличествоВДокументе;
Движение.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконто.Материалы] = ВыборкаДетальныеЗаписи.Номенклатура;
КонецЕсли;// Регистр Продажи
Движение = Движения.Продажи.Добавить();
Движение.Период = Дата;
Движение.Номенклатура = ВыборкаДетальныеЗаписи.Номенклатура;
Движение.Клиент = Клиент;
Движение.Мастер = Мастер;
Движение.Количество = ВыборкаДетальныеЗаписи.КоличествоВДокументе;
Движение.Выручка = ВыборкаДетальныеЗаписи.СуммаВДокументе;
Движение.Стоимость = СтоимостьМатериала * ВыборкаДетальныеЗаписи.КоличествоВДокументе;
КонецЦикла;Движения.Записать();
Если Режим = РежимПроведенияДокумента.Оперативный Тогда//Проверить отрицательные остатки.
Запрос3 = Новый Запрос;
Запрос3.МенеджерВременныхТаблиц = МенеджерВТ;
Запрос3.Текст = «ВЫБРАТЬ
|ОстаткиМатериаловОстатки.Материал,
|ОстаткиМатериаловОстатки.НаборСвойств,
|ОстаткиМатериаловОстатки.КоличествоОстаток
|ИЗ
|РегистрНакопления.ОстаткиМатериалов.Остатки(
|,
|(Материал, НаборСвойств) В
|(ВЫБРАТЬ
|НоменклатураДокумента.Номенклатура,
|НоменклатураДокумента.НаборСвойств
|ИЗ
|НоменклатураДокумента)
|И Склад = &Склад) КАК ОстаткиМатериаловОстатки
|ГДЕ
|ОстаткиМатериаловОстатки.КоличествоОстаток < 0″;
Запрос3.УстановитьПараметр(«Склад», Склад);Результат = Запрос3.Выполнить();
ВыборкаДетальныеЗаписи = Результат.Выбрать();Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Сообщение = Новый СообщениеПользователю();
Сообщение.Текст = «Лей» + Строка(- ВыборкаДетальныеЗаписи.КоличествоОстаток) + » единиц материала Лей «»» + ВыборкаДетальныеЗаписи.Материал =»»»»;
Сообщение.Сообщить();
Отказ = Истина;КонецЦикла;
КонецЕсли;
КонецПроцедуры
Процедура ПриУстановкеНовогоНомера(СтандартнаяОбработка, Префикс)Префикс = Обмен.ПолучитьПрефиксНомера();
КонецПроцедуры
Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)
Если ТипЗнч(ДанныеЗаполнения) = Тип(«СправочникСсылка.Клиенты») Тогда
// Заполнение шапки
Клиент = ДанныеЗаполнения.Ссылка;
ОбъектОснование = ДанныеЗаполнения.Ссылка;
КонецЕсли;
КонецПроцедуры
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)ПроверяемыеРеквизиты.Удалить(ПроверяемыеРеквизиты.Найти(«ПереченьНоменклатуры.НаборСвойств»));
Индекс = 0;Для Каждого ТекСтрокаПереченьНоменклатуры Из ПереченьНоменклатуры Цикл
Индекс = Индекс + 1;Если ТекСтрокаПереченьНоменклатуры.Номенклатура.ВидНоменклатуры = Перечисления.ВидыНоменклатуры.Материал Тогда
Если Не ЗначениеЗаполнено(ТекСтрокаПереченьНоменклатуры.НаборСвойств) Тогда
Сообщение = Новый СообщениеПользователю();
Сообщение.Текст = «В строке » + Индекс + » списка Перечень номенклатуры не заполнена колонка Набор свойств»;
Сообщение.Поле = «ПереченьНоменклатуры[» + Строка(Индекс — 1) + «].НаборСвойств»;
Сообщение.УстановитьДанные(ЭтотОбъект);
Сообщение.Сообщить();
Отказ = Истина;
КонецЕсли;КонецЕсли;
КонецЦикла;
КонецПроцедуры
{Документ.ОказаниеУслуги.МодульОбъекта(166)}: Ошибка при установке значения атрибута контекста (Текст)
Сообщение.Текст = «Лей» + Строка(- ВыборкаДетальныеЗаписи.КоличествоОстаток) + » единиц материала Лей «»» + ВыборкаДетальныеЗаписи.Материал =»»»»;
по причине:
Несоответствие типов
Несоответствие типов -
Реклама на форуме
Чтобы убрать:
-
«+», а не «=» после .Материал
Похожие темы
Heltarion 2 / 2 / 0 Регистрация: 21.11.2011 Сообщений: 57 |
||||
1 |
||||
02.12.2011, 11:18. Показов 9104. Ответов 11 Метки нет (Все метки)
Добрый день! ТПП — «табличное поле правил», в ней уже занесены некотрые значения из XML Код процедуры:
0 |
308 / 308 / 1 Регистрация: 16.01.2011 Сообщений: 1,073 |
|
02.12.2011, 11:32 |
2 |
СохранитьНажатие(Элемент) это событие формы
1 |
2 / 2 / 0 Регистрация: 21.11.2011 Сообщений: 57 |
|
02.12.2011, 11:56 [ТС] |
3 |
СохранитьНажатие(Элемент) это событие формы В МодулеОбъекта создал функцию «Процедура СохранитьВЭксель(ТПП) Экспорт»
0 |
308 / 308 / 1 Регистрация: 16.01.2011 Сообщений: 1,073 |
|
02.12.2011, 12:10 |
4 |
процедуру ИнициализацияЭкселя() тоже закинь в модуль объекта
1 |
2 / 2 / 0 Регистрация: 21.11.2011 Сообщений: 57 |
|
02.12.2011, 12:19 [ТС] |
5 |
Да я именно так и сделал, просто забыл упомянуть, ТПП нужна в противном случае он не понимает что это за переменная Добавлено через 4 минуты Так работает, но если я поставлю Дело в том что «стр.НоменклатураБазы» — это справочник ссылка, если у нее текстовый тип то программа глотает и записывает.
0 |
19 / 18 / 1 Регистрация: 15.11.2011 Сообщений: 54 |
|
02.12.2011, 12:22 |
6 |
чет вы мудрено делаете.
1 |
2 / 2 / 0 Регистрация: 21.11.2011 Сообщений: 57 |
|
02.12.2011, 12:28 [ТС] |
7 |
В данный момент ему не нравится присваемое значение к ячейке экселя (если я правильно понимаю сообщение «Ошибка при установке значения атрибута контекста (Value)» ) Причем если тип значения строка, то он его получает без вопросо, если тип значения СправочникССсылка, то он руегается на «Ошибка при установке значения атрибута контекста (Value)». Я просто не понимаю как обратиться к такому типу переменных чтобы получить значение типа строка.
0 |
19 / 18 / 1 Регистрация: 15.11.2011 Сообщений: 54 |
|
02.12.2011, 12:30 |
8 |
а принудительно все значения в текст перевести нельзя?
1 |
308 / 308 / 1 Регистрация: 16.01.2011 Сообщений: 1,073 |
|
02.12.2011, 12:30 |
9 |
стр.НоменклатураБазы.Наименование например
1 |
2 / 2 / 0 Регистрация: 21.11.2011 Сообщений: 57 |
|
02.12.2011, 12:32 [ТС] |
10 |
стр.НоменклатураБазы — это уже есть наименование интересующего меня поля (имя столбца), в некотрых случаях можно писать: стр.НоменклатураБазы.Значение, но это нетот случай Добавлено через 56 секунд
0 |
308 / 308 / 1 Регистрация: 16.01.2011 Сообщений: 1,073 |
|
02.12.2011, 12:34 |
11 |
значение из Excel?
1 |
Heltarion 2 / 2 / 0 Регистрация: 21.11.2011 Сообщений: 57 |
||||
02.12.2011, 12:43 [ТС] |
12 |
|||
Рабочий код:
0 |
1 февраля, 2017
21 апреля, 2017
Дано
- 1С конфигурация бухгалтерия предприятия 2.0
- Ошибка печати ПКО (приходный кассовый ордер):
{ОбщаяФорма.ФормаПечати.Форма(18)}: Ошибка при установке значения атрибута контекста ЭлементыФормы.ПолеДокумента.ПолеСверху по причине: Несоответствие типов
Анализ проблемы
На первый взгляд все ужасно:
- в конфигураторе видно, что система пытается выполнить строчку кода:
ЭлементыФормы.ПолеДокумента.ПолеСверху = ПечатныйДокумент.ПолеСверху;
- в отладке видно, что обе переменные типа “Число”,
- синтакс-помощник говорит что:
ТабличныйДокумент (SpreadsheetDocument) ПолеСверху (TopMargin) Использование: Чтение и запись.
То есть ПолеСверху доступно для записи и обе переменные типа число и все тут корректно, но система говорит “Несоответствие типов” – полный бред.
Решение
На решение проблемы натолкнула фраза “Ошибка при установке значения атрибута контекста”, значит что-то не так с доступом.
Оказалось в базе нет ни одного пользователя и работа осуществлялась под пользователем НеАвторизован. После создания пользователя с необходимыми правами все заработало.
Дополнено 2017.04.10
Проблема повторилась, но уже при печати РТУ и с использованием уже настроенной учетной записи.
Помогло создание нового пользователя с такими же правами доступа. То есть нового создаем, старого удаляем и после этого все работает.