8.х Поиск последней строки

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Сергей1111, 12 авг 2016.

  1. TopicStarter Overlay
    Сергей1111
    Offline

    Сергей1111

    Регистрация:
    27 июл 2016
    Сообщения:
    23
    Симпатии:
    0
    Баллы:
    1
    Добрый день.
    Не могу разобраться, как сделать поиск в справочнике последней строки, выбрать определенную колонку например (Код), и выгрузить значение колонки в документ. И поместить в колонку (номер)
    Все это действие должно происходить при нажатие кнопки.
    Подскажите, заранее спасибо.
  2. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.567
    Симпатии:
    717
    Баллы:
    204
    Что в вашем понимании "последняя строка в справочнике?"

    Как уже сделали и что именно не получается?
    Сергей1111 нравится это.
  3. TopicStarter Overlay
    Сергей1111
    Offline

    Сергей1111

    Регистрация:
    27 июл 2016
    Сообщения:
    23
    Симпатии:
    0
    Баллы:
    1
    Объясню по порядку.
    Справочник Скот он создан что бы хранить информацию о коровах. Каждой корове присвоены свои данные есть код у коровы который не должен повторяться повторятся с кодом у других коров.
    Я создал документ приплод, он создан что бы содержать информацию о рожденной корове. Суть в чем пользователь создает строку где указывает данные рожденных коров, к примеру создал он 10 строк. И нажатием на кнопку программа должна заполнить все колонку номер бирки. Определить из справочника скот последнее значения кода и сделать последний код+1 что бы не было повтора.
    --- Объединение сообщений, 12 авг 2016 ---
    Не могу понять как осуществить это.
  4. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.567
    Симпатии:
    717
    Баллы:
    204
    Почему нельзя использовать код справочника Скот для решения вашей задачи? Платформа умеет выполнять автонумерацию и контроль уникальности кода.

    При этом пользователю вручную необходимо создать элементы справочника по количеству рожденных коров.
  5. TopicStarter Overlay
    Сергей1111
    Offline

    Сергей1111

    Регистрация:
    27 июл 2016
    Сообщения:
    23
    Симпатии:
    0
    Баллы:
    1
    Как это осуществить? Можете показать пример, а там я дальше додумаю.
    все сделал кроме этого.
  6. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.567
    Симпатии:
    717
    Баллы:
    204
    Пример чего показать?
    У вас какой код заполнения табличной части документа уже есть?
  7. TopicStarter Overlay
    Сергей1111
    Offline

    Сергей1111

    Регистрация:
    27 июл 2016
    Сообщения:
    23
    Симпатии:
    0
    Баллы:
    1
    Процедура ДобавитьЭлементыСправочника(Кнопка)
    ТабличнаяЧасть = Приплод;
    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("НомерБирки", Ссылка);
    Запрос.УстановитьПараметр("ДатаДокумента", ТекущаяДата());


    Запрос.УстановитьПараметр("Ссылка", Ссылка);
    Запрос.Текст = "ВЫБРАТЬ
    | КА_Скот.Код,
    | КА_ПриплодПриплод.НомерБирки
    |ИЗ
    | Документ.КА_Приплод.Приплод КАК КА_ПриплодПриплод
    | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.КА_Скот КАК КА_Скот
    | ПО КА_ПриплодПриплод.Скот = КА_Скот.Ссылка
    |
    |СГРУППИРОВАТЬ ПО
    | КА_Скот.Код,
    | КА_ПриплодПриплод.НомерБирки";



    РезультатЗапроса = Запрос.Выполнить().Выгрузить();
    НомерБирки = "НомерБирки";
    ТабличнаяЧасть = Приплод;

    Запрос.УстановитьПараметр("Код", Ссылка);
    Для Каждого НомерБирки Из Приплод.НомерБирки Цикл
    КолонкаНомерБирки = Приплод [Приплод.НомерБирки()];

    НомерБирки =Новый ОписаниеТипов("Строка", Новый КвалификаторыСтроки(50,4));


    КонецЦикла;
    Вот пробовал
  8. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.567
    Симпатии:
    717
    Баллы:
    204
    Пока не понимаю, для чего это все.

    В справочник "Скот" пользователи добавляют вручную элементы, заполняя все данные по конкртеному животному, кроме кода элемента.
    При записи элемента справочника платформа сама автоматически присвоит код - он будет уникальным, если в свойствах справочника включен контроль уникальности.

    Далее в табличную часть документа пользователь добавляет строки и указывает созданные только что элементы справочника "Скот".
    При проведении документа "Приплод" можно проверить, используются ли указаные элементы справочника "Скот" в других документах запросом вида:

    Код:
    Выбрать
    <РеквизитТабличнойЧастиДокументаСоСсылкойНаЭлементСправочникаСкот>.Код
    
    ИЗ Документ.КА_Приплод.Приплод КАК ТабличнаяЧастьДокумента
    
    ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.КА_Приплод.Приплод КАК ИспользуемыеКоды
    ПО ТабличнаяЧастьДокумента.<РеквизитТабличнойЧастиДокументаСоСсылкойНаЭлементСправочникаСкот> = ИспользуемыеКоды.<РеквизитТабличнойЧастиДокументаСоСсылкойНаЭлементСправочникаСкот>
    И ИспользуемыеКоды.Проведен
    
    ГДЕ НЕ ТабличнаяЧастьДокумента.Ссылка = &СсылкаНаТекущийДокумент
    Если запрос вернет что-либо, значит элемент уже используется, если не вернет - проводим текущий документ.
  9. TopicStarter Overlay
    Сергей1111
    Offline

    Сергей1111

    Регистрация:
    27 июл 2016
    Сообщения:
    23
    Симпатии:
    0
    Баллы:
    1
    Процедура ДобавитьЭлементыСправочника(Кнопка)
    ТабличнаяЧасть = Приплод;
    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("НомерБирки", Ссылка);
    Запрос.УстановитьПараметр("ДатаДокумента", ТекущаяДата());
    Запрос.УстановитьПараметр("КА_Скот.Код", Ссылка);
    Запрос.УстановитьПараметр("Код", Ссылка);

    Запрос.УстановитьПараметр("Ссылка", Ссылка);
    Запрос.Текст = "ВЫБРАТЬ
    | КА_ПриплодПриплод.НомерБирки,
    | КА_Скот.Код
    |ИЗ
    | Документ.КА_Приплод.Приплод КАК КА_ПриплодПриплод
    | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.КА_Скот КАК КА_Скот
    | ПО КА_ПриплодПриплод.НомерМатки = КА_Скот.Ссылка
    | И КА_ПриплодПриплод.Скот = КА_Скот.Ссылка
    | И КА_ПриплодПриплод.НомерБирки = КА_Скот.Ссылка
    |ГДЕ
    | КА_ПриплодПриплод.НомерБирки = &Код";



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




    КонецЦикла;
    КонецПроцедуры
    Дает ошибку
    {Документ.КА_Приплод.Форма.ФормаДокумента.Форма(30)}: Ошибка при вызове конструктора (КвалификаторыСтроки)
    НомерБирки =Новый ОписаниеТипов("Строка", Новый КвалификаторыСтроки(50,4));
    по причине:
    Несоответствие типов (параметр номер '2')
  10. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.567
    Симпатии:
    717
    Баллы:
    204
    Вы абсолютно не понимаете, что делаете. Советую почитать литературу про программирование 1С, в которой разбираются простейшие примеры.
  11. TopicStarter Overlay
    Сергей1111
    Offline

    Сергей1111

    Регистрация:
    27 июл 2016
    Сообщения:
    23
    Симпатии:
    0
    Баллы:
    1
    Процедура ДобавитьЭлементыСправочника(Кнопка)
    ТабличнаяЧасть = Приплод;
    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("НомерБирки", Ссылка);
    Запрос.УстановитьПараметр("ДатаДокумента", ТекущаяДата());

    Запрос.УстановитьПараметр("Код", Ссылка);
    Запрос.УстановитьПараметр("Код", Ссылка);

    Запрос.УстановитьПараметр("Ссылка", Ссылка);
    Запрос.Текст = "ВЫБРАТЬ
    | КА_ПриплодПриплод.НомерБирки,
    | КА_Скот.Код
    |ИЗ
    | Документ.КА_Приплод.Приплод КАК КА_ПриплодПриплод
    | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.КА_Скот КАК КА_Скот
    | ПО КА_ПриплодПриплод.НомерМатки = КА_Скот.Ссылка
    | И КА_ПриплодПриплод.Скот = КА_Скот.Ссылка
    | И КА_ПриплодПриплод.НомерБирки = КА_Скот.Ссылка
    |ГДЕ
    | КА_ПриплодПриплод.НомерБирки > &Код";
    РезультатЗапрос = Запрос.Выполнить().Выгрузить();
    ТабПриплод = Приплод;
    Строка = ТабПриплод.Добавить();
    Строка.ДатаРождения = "ТекущаяДата()";
    Если Приплод <> Неопределено Тогда
    Для Каждого Строка Из Приплод Цикл
    ЗаполнитьЗначенияСвойств(Приплод,Строка);
    Строка.ДатаРождения = ТекущаяДата();
    КонецЦикла;
    КонецЕсли;
    Код = Ссылка;
    НомерБирки = Ссылка;
    Для Каждого НомерБирки Из Приплод Цикл

    Если НомерБирки > Код Тогда
    НомерБирки = Истина;
    КонецЕсли;
    Если НомерБирки <= Код Тогда
    НомерБирки = Ложь;
    НомерБирки.Очистить();
    КонецЕсли;
    КонецЦикла;
    КонецПроцедуры
    Вот работает только не правильно считает.
    Пропускает номера которые уже существуют,а на новые ругается
    что сделать?

Поделиться этой страницей