Имя: Пароль:
1C
1С v8
Значение не является значением объектного типа
,
0 Farid2015
 
14.09.15
14:14
В форме документа в процедуре ТоварыНоменклатураПриИзменении(Элемент) написал:

Для Каждого ТекСтрокаТовары Из Товары Цикл
Если ТекСтрокаТовары.Номенклатура.ВестиСерийник = Истина Тогда
  ТекСтрокаТовары.Количество = 1;
  ОформлениеСтроки.Ячейки.Количество.ТолькоПросмотр = Истина;
КонецЕсли;
КонецЦикла;

В итоге ругается ) Покажите как надо?)
1 ДенисЧ
 
14.09.15
14:15
Я не стану угадывать строку ошибки за три попытки!
Хотя и так всё ясно
2 butterbean
 
14.09.15
14:16
просто ппц...
это нужно в ПриПолученииДанных делать
3 Farid2015
 
14.09.15
14:19
Я и не спорю, что ппц) Учусь я еще методом проб и ошибок )
4 ДенисЧ
 
14.09.15
14:19
(3) А лучше учись методом чтения книжек...
5 Farid2015
 
14.09.15
14:22
Этот ответ тут часто звучит и естественно я должен ответить, что вот на выходных сяду за Радченко и Чистова, но некогда) Думал ткнете меня по-быстрому и все
6 Михаил Козлов
 
14.09.15
14:30
Что Вы написали, мы видим. А чего хотите добиться?
Если количество = 1, то достаточно, примерно такого:
ТекСтрокаТовары = ЭлементыФормы.Товары.ТекущиеДанные;
Если ТекСтрокаТовары.Номенклатура.ВестиСерийник = Истина Тогда
  ТекСтрокаТовары.Количество = 1;
КонецЕсли;
Если же запретить редактировать количество для таких строк, то это следует делать в другом событии табличного поля.
7 Farid2015
 
14.09.15
14:35
В УПП нет учета по серийным номерам на сырье и материалы как таковое. Пытаюсь реализовать (не по сериям), в регистр сведений делается строчка при Поступлении товаров. При перемещении между складами следовательно строчка по одному складу удаляется, по другому создается. Мне надо заставить товарища кладовщика по-строчно добавлять по одной позиции в документ, если номенклатура имеет "Вести серийник" и в ячейку Серийник вводить серийный номер. Кол-во 1 подставляется автоматом, вот надо чтоб количество и не изменяли после.
8 Михаил Козлов
 
14.09.15
14:42
(7) а. Не красиво, но пусть изменяют, а Вы обратно в 1.
б. Посмотрите события табличного поля: кажется, ПередНачаломИзменения. Только имейте в виду, что в этом событии параметр "Элемент" - это табличное поле и для получения реквизитов строки нужно взять ТекущиеДанные.
9 Farid2015
 
14.09.15
15:29
Короче, пришлось думать самому )
На форме дока ПриОткрытии

ЭлементыФормы.Товары.Колонки.Серийник.Видимость = Ложь;

Тут ТоварыНоменклатураПриИзменении(Элемент)

Для Каждого ТекСтрокаТовары Из Товары Цикл
Если ТекСтрокаТовары.Номенклатура.ВестиСерийник = Истина Тогда
ТекСтрокаТовары.Количество = 1;
ЭлементыФормы.Товары.Колонки.Серийник.Видимость=Истина;
Предупреждение("По номенклатуре " +ТекСтрокаТовары.Номенклатура + "ведется серийный номер, не забудь ввести!");
КонецЕсли;
КонецЦикла;

и в ТоварыКоличествоПриИзменении(Элемент)

Для Каждого ТекСтрокаТовары Из Товары Цикл
Если ТекСтрокаТовары.Номенклатура.ВестиСерийник = Истина Тогда
ТекСтрокаТовары.Количество = 1;
Предупреждение("Не меняй кол-во, блеать!");
КонецЕсли;
КонецЦикла;

При проведении делаются записи в регистре сведений через Записи = РегистрыСведений.Серийники.СоздатьНаборЗаписей();, а также идет проверка заполнения серийников.
Всем спасибо )
10 Михаил Козлов
 
14.09.15
15:39
(9) При таком ПриОткрытии, Вы столкнетесь с тем, что документ открыли, пытаются закрыть и получают предупреждение об изменении объекта. Кроме того, вряд ли оператор будет читать и записывать себе на бумажку на бумажку артикулы, по которым ему нужно не забыть указать серийник.
11 Farid2015
 
14.09.15
15:54
1) Предупреждения об изменении объекта при закрытии пустого незаполненного дока нет, спокойно закрывается.
2) ОбработкаПроведения(Отказ, РежимПроведения)

Для Каждого ТекСтрокаТовары Из Товары Цикл
Если ТекСтрокаТовары.Номенклатура.ВестиСерийник = Истина и ТекСтрокаТовары.Серийник = "" Тогда
Предупреждение("Не введен серийный номер!");
Отказ=Истина;
    з=Записи.Добавить();
    з.Документ=ЭтотОбъект.Ссылка;
    з.Родитель=ТекСтрокаТовары.Номенклатура;
    з.Серийник=ТекСтрокаТовары.Серийник;
    з.Склад=СкладОрдер;
    з.ЕстьНет=Истина;
    з.ПредСклад="";
    Записи.Записать();
        КонецЕсли;
    КонецЦикла;
Не проводится док с пустым серийным номером.
12 Farid2015
 
14.09.15
15:57
Отказ=Истина;
Иначе )
    з=Записи.Добавить();
13 1sanekmaloi1
 
14.09.15
16:01
а если в серийник ввести пробел?
14 Михаил Козлов
 
14.09.15
16:02
(11) В модуле объекта НЕ рекомендуется использовать Предупреждение. Делайте такое предупреждение в модуле формы в ПередЗаписью, а в модуле объекта в ПередЗаписью проверяйте и вырабатывайте Отказ = ИСТИНА.
Про РС. Раз уж Вы пишете в него документ, как измерение, подчините тогда РС регистратору. Заодно не будет проблем с отменой проведения документа.
15 Farid2015
 
14.09.15
16:04
Ок, спасибо, это все поправлю, первый день занимаюсь. Если подчинять регистратору, тогда нет отбора по другим измерениям (серийник).
16 Farid2015
 
14.09.15
16:06
Пробел пишется в рс, завтра буду это все доделывать)
Сейчас другая проблема появилась, док Перемещение товаров в проведении делает такое:

Записи = РегистрыСведений.Серийники.СоздатьНаборЗаписей();
    Записи.Отбор.Документ.Установить(ЭтотОбъект.Ссылка);
    Записи.Прочитать();
    Записи.Очистить();
    Записи.Записать();
    Для Каждого ТекСтрокаТовары Из Товары Цикл
        Если ТекСтрокаТовары.Номенклатура.ВестиСерийник = Истина Тогда
    Записи = РегистрыСведений.Серийники.СоздатьНаборЗаписей();
    Записи.Отбор.Родитель.Установить(ТекСтрокаТовары.Номенклатура);
    Записи.Отбор.Серийник.Установить(ТекСтрокаТовары.Серийник);
    Записи.Прочитать();
    Записи.Очистить();
       Записи.Записать();
    з=Записи.Добавить();
    з.Документ=ЭтотОбъект.Ссылка;
    з.Родитель=ТекСтрокаТовары.Номенклатура;
    з.Серийник=ТекСтрокаТовары.Серийник;
    з.Склад=СкладПолучатель;
    з.ЕстьНет=Истина;
    Записи.Записать();
        КонецЕсли;
    КонецЦикла;

Если кладовщик решит отменить проведение дока, нужно возвращать серийник на предыдущий склад ) А его я удалил проведением. Нужно новое измерение ПредСклад
17 1sanekmaloi1
 
14.09.15
16:07
а кто учил имена такие дикие присваивать, "СерийныйНомер" нельзя назвать? Серийник звучит по гопски, как будто двоечник пишет.
18 Михаил Козлов
 
14.09.15
16:08
(15) Вам нужен учет серийных номеров? Тогда это регистр накопления (приходная накладная: приход, перемещение: расход со склада отправителя и приход на склад получатель, расходная накладная - расход).
19 Farid2015
 
14.09.15
16:12
В колонке ТЧ у каждого дока в шапке Серийный номер, так что норм, но учту, делаю на скорую руку.
А про регистр накопления... может и надо было, но начал на рс. У меня булево ЕстьНет отвечает за остатки )
Да и по сути, по тз нужно просто в будущем находить доки и видеть какой материал с каким серийников ушел на какую продукцию. Отчетов им не надо никаких, три раза переспросил.
20 Nuobu
 
14.09.15
16:15
(19) Отчетов им не надо никаких - врут!
21 aleks_default
 
14.09.15
16:15
(0)мда, начал с запрета изменения значения в ячейке, закончите, навеное, написанием своей УПП?
22 Farid2015
 
14.09.15
16:16
Прост самоучка, вылез пробел в самоучении в виде объектного ориентирования ) Думал здесь быстренько укажут и дальше пойду, а тут ругать начали )
23 Nuobu
 
14.09.15
16:19
(22) Не тебя, а твой подход.
То, что ты делаешь, вылезет тебе боком.
24 Nuobu
 
14.09.15
16:20
(22) Переделай на РН, вместо серийника введи СерийныйНомер.
СерийныйНомер сделай справочником, а не строкой.
25 Farid2015
 
14.09.15
16:23
1)Если СерийныйНомер сделать справочником, то это почти копия серии в УПП, можно было изначально на ней делать.
2)Как заходят отчеты и РН, это доп ТЗ и деньги, ну как то так )
26 Nuobu
 
14.09.15
16:25
(25) Так используй серии.
27 Farid2015
 
14.09.15
16:30
Их кладовщику нужна строчка в доке, понимаешь ли лень зайти, создать новую строчку справочника и ее выбрать, плюс может ошибиться и выбрать имеющийся справочник, а тогда нарушается уникальность серийных номеров в природе )
А рисовать форму, которая за нее создавала бы и выбирала в док значение, мне было лень. Я пытался объяснить минусы, но как говорится - "что хотели, то и получат".
28 Nuobu
 
14.09.15
16:34
(27) Я, конечно, программист, а не консультант, но тут проблема, как мне кажется, в том, что внедрением как раз прогер занимается, а не консультант.
При консультанте нормальном такого не будет.
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший