7.7 В одном поле несколько значений.

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем n_h, 26 янв 2011.

  1. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    К великому сожалению все мои телепатические способности иссякли при ответах на тему сдачи ПФР)))))))) Не знал о чем вы ПОДУМАЛИ.

    Ответил о чем СПРОСИЛИ...
    Да найдет, но если диапаозоны от 130 до 136 и от 140 до 146 вбить номер 137 найдет тоже, что не нужно.

    ..или это был не вопрос?
  2. TopicStarter Overlay
    n_h
    Offline

    n_h Опытный в 1С

    Регистрация:
    21 янв 2011
    Сообщения:
    59
    Симпатии:
    0
    Баллы:
    26
    это был не вопрос))

    А нельзя ли попдробнее про СЛУЖЕБНЫЙ документ?
  3. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    создаете специальный документ (СД). В котором нет шапки - только т.часть из 2х реквизитов от и до (м.б. и товар).

    Дальше создаем механизм в нашем документе (назовем его Накладная(Н)). В нем есть шапка и т.часть в которой товар, количество, сумма и ссылка на СД.

    Вот тут пошли варианты. Можно СД общим для всей Н, а можно и для каждого товара отдельно. В любом случае у вас появится вторая табличая часть (виртуальная) в которой будут отображаться серии номеров
  4. TopicStarter Overlay
    n_h
    Offline

    n_h Опытный в 1С

    Регистрация:
    21 янв 2011
    Сообщения:
    59
    Симпатии:
    0
    Баллы:
    26
    Делаю так создаю новый документ СД реквизиты ИдНомерОт и ИдНомерДо далее в документе РасходнаяНакладня в табличной части добавляю реквизит ПромежутокИН выбираю тип значени Документ.СД При заполнении документа жму на ПромежутокИН попадаю в журнал ДокументовСД там создаю новый документ и заполняю ИдНомерОт и ИдНомерДо. Все ли правильно я делаю и можно ли это как то упростить?
  5. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Безусловно... Использовать дополнительную ТаблицуЗначений на форме документа. Тут же можно настроить механизм заполнения ее сериями номеров и автоматичесое сохранение в во вспомогательный документ. Это сложная и кропотливая работа. Но так будет правильно/красиво/наглядно
  6. TopicStarter Overlay
    n_h
    Offline

    n_h Опытный в 1С

    Регистрация:
    21 янв 2011
    Сообщения:
    59
    Симпатии:
    0
    Баллы:
    26
    Для начала пусть остается по простому так вопрос тогда в другом как открыть документ в котором ПромежутокИн = номеру СД?
  7. WaRDeR
    Offline

    WaRDeR Модераторы Команда форума Модератор

    Регистрация:
    23 ноя 2006
    Сообщения:
    3.263
    Симпатии:
    14
    Баллы:
    29
    Чет уже и я не понимаю, к чему все эти горожения?
    Ну сделайте текстовый реквизит ТЧ, храните в нем номера в формате, допустим {от1/до1}{от2/до2}....{отN/доN}.
    Чего не хватает для полного счастья?
    Если проблема с вводом, так вводите через обработку, или как выше писал Угодник, вынесите список на форму.

    Просто ситуация такая, что если нужен простой в написании код, и быстрый в обработке алгоритм - заносите по 2 строки.
    Если достаточно опыта и жажда поэкспериментировать - то можно еще "веселые" вариантики по придумывать.
  8. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Вариант со строкой даже не предлагал. Т.к. непонятно сколько значений надо хранить. А использовать строку неограниченной длины в т.ч......WaRDeR, ну ты меня понимаешь....

    К вопросу об открытии документа.. nn_hh, большая просьба - формулируйте вопросы поконкретнее. Откуда вы хотите его открывать? Из документа накладная или из своего отчета?
  9. TopicStarter Overlay
    n_h
    Offline

    n_h Опытный в 1С

    Регистрация:
    21 янв 2011
    Сообщения:
    59
    Симпатии:
    0
    Баллы:
    26
    Хочу открывать из своего отчета, делаю примерно так:
    Код:
    Функция ВернутьЧисло(Стр)  
    Возврат Число(Сред(Стр,2));
    КонецФункции
    
    Функция НайтиСтрокуДокумента(Поиск,Док)  
    Номер=0;  
    Док.ВыбратьСтроки();  
    Пока Док.ПолучитьСтроку()=1 Цикл      
    Если (Лев(Поиск,1)<>Лев(Док.ИдНомерОт,1))ИЛИ(Лев(Поиск,1)<>Лев(Док.ИдНомерДо,1)) Тогда
    Продолжить;
    КонецЕсли;
    Если (ВернутьЧисло(Поиск)>=ВернутьЧисло(Док.ИдНомерОт))И(ВернутьЧисло(Поиск)<=ВернутьЧисло(Док.ИдНомерДо)) Тогда
    Номер=Док.НомерСтроки;           
    Прервать;
    
    КонецЕсли;  
    КонецЦикла; 
    Возврат Номер;
    КонецФункции 
    
    Функция НайтиСтрокуДокумента1(Поиск1,Док1)  //
    Номер1=0; // 
    Док1.ВыбратьСтроки();    //
    Пока Док1.ПолучитьСтроку()=1 Цикл  //    
    Если Поиск1=Док1.ПромежутокИН Тогда
    Номер1=Док1.НомерСтроки;
    Прервать;   //
    
    КонецЕсли;       //
    КонецЦикла;            //
    Возврат Номер1;
    //
    КонецФункции                  //
    
    Процедура Сформировать()
    Поиск=Текст; //наше число
    Если ПустоеЗначение(Текст) = 1 Тогда
    
    Предупреждение("Задайте непустое значение Кода !!!"); 
    //    Поиск=0; 
    Иначе Сообщить ("Идет поиск...");     
    КонецЕсли;
    
    Док=СоздатьОбъект("Документ.ИнОтДо"); //для примера - не знаю как у вас
    Док1=СоздатьОбъект("Документ.РасходнаяНакладная");
    Док.ВыбратьДокументы();
    Док1.ВыбратьДокументы();
    
    Пока Док.ПолучитьДокумент()=1 Цикл
    Поз=НайтиСтрокуДокумента(Поиск,Док);
    
    Если Поз<>0 Тогда
    
    Сообщить("Нашли! "+Док+" номер строки "+Поз);
    ОткрытьФорму (Док.ТекущийДокумент());
    
    
    
    КонецЕсли;
    
    КонецЦикла;    
    Поиск1=Док; 
    // Док1.ВыбратьСтроки(); //
    Пока Док1.ПолучитьДокумент()=1 Цикл  //
    Поз1=НайтиСтрокуДокумента1(Поиск1,Док1);//
    
    Если Поз1<>0 Тогда 
    Сообщить("Нашли! "+Док1+" номер строки "+Поз1); //
    //ОткрытьФорму (Док1.ТекущийДокумент());  //
    КонецЕсли;    //
    
    КонецЦикла;      // 
    
    
    
    Сообщить ("Поиск окончен")
    КонецПроцедуры
    
    
    В результате чего находит СД но не находит саму накладаную, где ошибка не могу понять?
    И еще почему то когда вставляю код в форму (на форум сюда) пропали знаки <>.... может что то еще исчезли хотя я не заметил....
  10. TopicStarter Overlay
    n_h
    Offline

    n_h Опытный в 1С

    Регистрация:
    21 янв 2011
    Сообщения:
    59
    Симпатии:
    0
    Баллы:
    26
    Вроде как разобрался и все работает но как то вроде грамозко и думаю когда будет много документо поиск займет значительное время? Если есть идею буду благодарен за замечания:
    Код:
    Функция ВернутьЧисло(Стр)  
    Возврат Число(Сред(Стр,2));
    КонецФункции
    
    Функция НайтиСтрокуДокумента(Поиск,Док)  
    Номер=0;  
    Док.ВыбратьСтроки();  
    Пока Док.ПолучитьСтроку()=1 Цикл      
    Если (Лев(Поиск,1)<>Лев(Док.ИдНомерОт,1))ИЛИ(Лев(Поиск,1)<>Лев(Док.ИдНомерДо,1)) Тогда
    Продолжить;
    КонецЕсли;
    Если (ВернутьЧисло(Поиск)>=ВернутьЧисло(Док.ИдНомерОт))И(ВернутьЧисло(Поиск)<=ВернутьЧисло(Док.ИдНомерДо)) Тогда
    Номер=Док.НомерСтроки;           
    Прервать;
    
    КонецЕсли;  
    КонецЦикла; 
    Возврат Номер;
    КонецФункции 
    
    Функция НайтиСтрокуДокумента1(Поиск1,Док1)  //
    Номер1=0; // 
    Док1.ВыбратьСтроки();    //
    Пока Док1.ПолучитьСтроку()=1 Цикл  //    
    Если Поиск1=Док1.ПромежутокИН Тогда
    Номер1=Док1.НомерСтроки;
    Прервать;   //
    
    КонецЕсли;       //
    КонецЦикла;            //
    Возврат Номер1;
    //
    КонецФункции                  //
    
    Процедура Сформировать()
    Поиск=Текст; //наше число
    Если ПустоеЗначение(Текст) = 1 Тогда
    
    Предупреждение("Задайте непустое значение Кода !!!"); 
    //	Поиск=0; 
    <span style='cursor: pointer; color:red' Onclick="window.open('http://www.1c-pro.ru/wiki/index.php/иначе')">	Иначе Сообщить ("Идет поиск...");     </span>
    КонецЕсли;
    
    Док=СоздатьОбъект("Документ.ИнОтДо"); //для примера - не знаю как у вас
    Док1=СоздатьОбъект("Документ.РасходнаяНакладная");
    Док.ВыбратьДокументы();
    Док1.ВыбратьДокументы();
    
    Пока Док.ПолучитьДокумент()=1 Цикл
    Поз=НайтиСтрокуДокумента(Поиск,Док);
    
    Если Поз<>0 Тогда
    
    <span style='cursor: pointer; color:red' Onclick="window.open('http://www.1c-pro.ru/wiki/index.php/сообщить')">			Сообщить("Нашли! "+Док+" номер строки "+Поз);</span>
    ОткрытьФорму (Док.ТекущийДокумент());
    
    
    
    
    Поиск1=(Док.ТекущийДокумент()); 
    // Док1.ВыбратьСтроки(); //
    Пока Док1.ПолучитьДокумент()=1 Цикл  //
    Поз1=НайтиСтрокуДокумента1(Поиск1,Док1);//
    
    Если Поз1<>0 Тогда 
    <span style='cursor: pointer; color:red' Onclick="window.open('http://www.1c-pro.ru/wiki/index.php/сообщить')">			Сообщить("Нашли! "+Док1+" номер строки "+Поз1); //</span>
    ОткрытьФорму (Док1.ТекущийДокумент());  //
    КонецЕсли;    //
    
    КонецЦикла;      // 
    КонецЕсли;
    
    КонецЦикла;	
    
    
    Сообщить ("Поиск окончен")
    КонецПроцедуры
    
    
  11. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    как вариант - в документе ИнОтДо в шапке хранить ссылку на расходную накладную

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