Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 12:02

Вопросы начинающего программиста

Автор SatiS77, 14 июн 2013, 21:14

0 Пользователей и 1 гость просматривают эту тему.

SatiS77

Цитата: GRADUS от 17 июн 2013, 21:55
А зачем? xDDD
Я ж говорю, задачки делаю, разбираюсь :)

GRADUS

Цитата: SatiS77 от 17 июн 2013, 22:00
Цитата: GRADUS от 17 июн 2013, 21:55
А зачем? xDDD
Я ж говорю, задачки делаю, разбираюсь :)

Ответил выше сообщением, эти 2 цикла надо писать после создания всей таблички.

Если надо при добавлении строки, то тоже самое, но не для всех строк, а для одной.

SatiS77

Цитата: GRADUS от 17 июн 2013, 22:09
Ответил выше сообщением, эти 2 цикла надо писать после создания всей таблички.

Если надо при добавлении строки, то тоже самое, но не для всех строк, а для одной.

Спасибо за ответы!
Но мне в общем надо менять на плюсик не все ячейки пустые, а только те, которые выделяются пользователям (процедура как раз "ПередНачаломИзменения").

Хотя это в общем не суть, т.к. в Вашем варианте  вылетает та же ошибка "Поле объекта не обнаружено".
Есть подозрение, что ошибка лежит где-то в плоскости добавления колонок..

GRADUS

Процедура ПриАктивизацииЯчейки(Элемент)
Элемент.ТекущиеДанные = "+"; //Если там будет ссыль, то надо получить объект и его изменять
КонецПроцедуры



SatiS77

Спасибо!
Еще такой вопросец есть. У меня есть 2 документа (грубо говоря ПокупкаТовара и РеализацияТовара) в каждом есть по несколько реквизитов и несколько табличных полей (в т.ч. Номенклатура, Количество). Из этих  двух документов я сделал РегистрНакопления остатков, который и показывает эти самые остатки как разницу между двумя документами.
Теперь стоит задача перед попыткой проведения в Документе "РеализацияТовара" сравнивать значение количества реализуемого товара с регистром накопления остатков. И соответственно, если остатков меньше, чем указано в документе "РеализацияТовара", выводить сообщение.
Пытаюсь сделать так, ругается.
Алгоритм вообще такой задумывался: сначала перебираем все строки из текущей табличной части Товара и на их базе формируем Отбор. Потом значение количество из этого отбора сравниваем с количеством из документа и при попытке провести сообщаем.

Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)

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

Если СтрокаТЧ.Количество < ТЗ.Количество Тогда
Сообщить("Остатков недостаточно");
КонецЕсли;
КонецЦикла;

КонецПроцедуры

GRADUS

Ну вот сам посмотри, что ты написал. Ты в последнем сравнении сравниваешь Строка.Кол и ТаблицаЗначений.Кол, смысл?
Мало того, что смысла нет, так у ТЗ такого поля нет.

Если ЗначениеЗаполнено(ТЗ) Тогда
    Если СтрокаТЧ.Количество < ТЗ[0].Количество Тогда
        Сообщить("Остатков недостаточно");   
    КонецЕсли;
Иначе
    Сообщить("Остатков недостаточно");
КонецЕсли;

SatiS77

Цитата: GRADUS от 23 июн 2013, 12:26
Ну вот сам посмотри, что ты написал. Ты в последнем сравнении сравниваешь Строка.Кол и ТаблицаЗначений.Кол, смысл?
Мало того, что смысла нет, так у ТЗ такого поля нет.

Если ЗначениеЗаполнено(ТЗ) Тогда
    Если СтрокаТЧ.Количество < ТЗ[0].Количество Тогда
        Сообщить("Остатков недостаточно");   
    КонецЕсли;
Иначе
    Сообщить("Остатков недостаточно");
КонецЕсли;


Спасибо большое. Забыл совсем, что у Таблицы значений нужно еще индекс строки указывать, чтобы к ней обратиться..

SatiS77

Еще один вопрос.
Изучаю регистры сведений, создал регистр КонтактнаяИнформация. Измерения создал 3 шт: Сотрудник, ТипКИ, ВидКИ. Ресурс один - "Представление". Заполнил регистр на несколько записей.
Теперь создал отчет, на форму вынес 3 поля ввода (пвСотрудник, пвТипКИ и пвВидКИ, куда выбираются значения из соответствующих справочников). Далее по кнопке сформировать хочу получить Ресурс нашего регистра.

Отбор = Новый Структура;

Если Не пвСотрудник.Пустая() Тогда
Отбор.Вставить("Сотрудник", пвСотрудник);
КонецЕсли;

Если Не пвТипКИ.Пустая() Тогда
Отбор.Вставить("ТипКИ", пвТипКИ);
КонецЕсли;

Если Не пвВидКИ.Пустая() Тогда
Отбор.Вставить("ВидКИ", пвВидКИ);
КонецЕсли;

Резалт = РегистрыСведений.КонтактнаяИнформация.СрезПоследних(, Отбор);
Резалт.ВыбратьСтроку();


Вылетает ошибка, мол "ВыбратьСтроку - Значение не является значением объектного типа". Хотя в других отчетах метод ВыбратьСтроку() без всяких проблем показывает табличку с результатом отбора. В чем может быть причина?

Dethmontt

Потому что СрезПоследних() есть только у периодического регистра сведений
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

SatiS77

Цитата: Dethmontt от 25 июн 2013, 22:01
Потому что СрезПоследних() есть только у периодического регистра сведений
Ясно, не знал.. А как тогда табличку получившуюся вывести посмотреть?

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск