Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » 1C Программирование и поддержка

Модерирует : ShIvADeSt

ShIvADeSt (03-04-2009 02:03): Продолжение тут
http://forum.ru-board.com/topic.cgi?forum=33&topic=10256#1
 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100

   

ShIvADeSt



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Тема для программирования !!!
Это продолжение темы, предыдущие части доступны тут


ПРОГРАММЫ  1С:Предприятие 1C - 1C: Вопросы по конфигурациям

ВАРЕЗНИК   1C:Предприятие 7.7 - 1С:Предприятие v.8.x - 1C Диск ИТС - 1С: Совместимо 8.х

Топик 1C Ebooks
ЗДЕСЬ (обновлено 27.03.2009) - небольшая библиотечка (книги, документация, видео, утилиты) по 1С, финансам, бухучету и т.п.
Все рассортировано по версиям...

Для заблудившихся в трех соснах >>> FAQ по форуму RU.Board

Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 02:30 06-02-2008 | Исправлено: vkramnik, 21:26 27-03-2009
Lihonosov

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Т.е. есть ли что-то вроде \r\n (разрыв строки)?

Нашел: РазделительСтрок
 
Добавлено:
Как программно получить остаток на складе определенного артикула из справочника ТМЦ?
Извиняюсь если много вопросов.

Всего записей: 541 | Зарегистр. 05-07-2007 | Отправлено: 16:30 25-03-2008
FOLD

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Lihonosov
Конфигурация построена на регистрах или бухсчетах ?

Всего записей: 1238 | Зарегистр. 26-01-2004 | Отправлено: 16:49 25-03-2008
Lihonosov

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Конфигурация построена на регистрах или бухсчетах ?  

А ХЗ! Как узнать, где посмотреть?

Всего записей: 541 | Зарегистр. 05-07-2007 | Отправлено: 16:58 25-03-2008
valerka78



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помощь - О програме: там в разделе "Установленные компоненты" смотришь - если установлена "Бухгалтерский учет" - значит счета, если "Оперативный учет" - значит регистры, если обе - и то, и то, хотя не факт, надо смотреть движения (проводки) документа

Всего записей: 248 | Зарегистр. 16-01-2006 | Отправлено: 17:04 25-03-2008
Lihonosov

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
FOLD
valerka78
"Бухгалтерский учет"

Всего записей: 541 | Зарегистр. 05-07-2007 | Отправлено: 17:08 25-03-2008
FOLD

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Lihonosov
Если бухучет ,тады я пас..

Всего записей: 1238 | Зарегистр. 26-01-2004 | Отправлено: 17:13 25-03-2008
Lihonosov

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
FOLD
1. А принцип при регистровом какой?
2. Возник такой вопрос:
Например, в стравочнике ТМЦ есть несколько единиц с одинаковыми артикулами, но с разными названиями. Я ищу по артикулу и наименованию  

Код:
...
Если (СпрТМЦ.НайтиПоРеквизиту("Артикул",МойАртикул,1)=1) И (СпрТМЦ.Наименование=МоеНаим) Тогда
...

но введь 1С сравнивает с первым попавшимся! А как же остальные? Или я ошибаюсь?
Запутался совсем

Всего записей: 541 | Зарегистр. 05-07-2007 | Отправлено: 17:21 25-03-2008
FOLD

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Lihonosov
1.Обращаешся к регистру методом  
 СводныеОстатки
Извлечь сводные ресурсы по регистру.
 
Синтаксис:
 
СводныеОстатки(<Измерен1>, <Измерен2>...)
 
Англоязычный синоним:
 
ConsolidatedRests
 
Параметры:
 
<Измерен1>, <Измерен2>...
 Выражения со значениями измерений регистра.
 
 
Описание:
 
Метод СводныеОстатки извлекает по переданным в качестве параметров измерениям все ресурсы по регистру. Полученные ресурсы затем можно считы-вать из атрибутов регистра. Метод работает аналогично процедуре Остатки, однако здесь могут быть заданы не все значения измерений, а только несколь-ко, но обязательно в правильной последовательности, соответствующей струк-туре измерений данного регистра, как она задана в конфигураторе. Измерения могут задаваться с пропусками (неуказанное значение — просто запятая), фик-сируются только указанные измерения.

 
Важно что еще  текущийЭлемент() в формк списка это есть номенклатура , по которой ты получаешь остаток
 
пример  в функуцмя выводящая остатки в ыорме списка
Функция ВывестиОстаток()  
        
     Фирма       = глЗначениеПоУмолчанию("ОсновнаяФирма");  
     Склад       = глЗначениеПоУмолчанию("ОсновнойСклад");
     Номенклатура= ТекущийЭлемент();  
        
    Если (Выбран()=0) Или (ЭтоГруппа()=1)     Тогда  
      Возврат("")
    ИначеЕсли
      Регистр.ОстаткиТМЦ.СводныйОстаток(Фирма,Номенклатура,Склад,,"Количество")=0 Тогда  
      Возврат("")  
    Иначе     
      Возврат
      Регистр.ОстаткиТМЦ.СводныйОстаток(Фирма,Номенклатура,Склад,,"Количество");
 
    КонецЕсли;  
 КонецФункции
 

Цитата:
2но введь 1С сравнивает с первым попавшимся!  

Так и есть. здесь цикл нужно организовать а лучше сделаьть запросом с двумя условиями , я пару страниц назад пример показал
 

Всего записей: 1238 | Зарегистр. 26-01-2004 | Отправлено: 17:34 25-03-2008 | Исправлено: FOLD, 17:35 25-03-2008
Lihonosov

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
FOLD

Цитата:
Так и есть. здесь цикл нужно организовать а лучше сделаьть запросом с двумя условиями , я пару страниц назад пример показал  

Сейчас у меня так:

Код:
Для Ном = 1 по ФайлНакладных.КоличествоСтрок() Цикл
Стр = ФайлНакладных.ПолучитьСтроку(Ном);
...
Если (СпрТМЦ.НайтиПоРеквизиту("Артикул",Артикул,1)=1) И (СпрТМЦ.Наименование=ТМЦ) Тогда                  
НоваяНакладная.НоваяСтрока();
НоваяНакладная.УстановитьАтрибут("ТМЦ",СпрТМЦ.ТекущийЭлемент());                  
НоваяНакладная.УстановитьАтрибут("Кво",Кво);
...

Если сделать так:

Код:
Для Ном = 1 по ФайлНакладных.КоличествоСтрок() Цикл
Стр = ФайлНакладных.ПолучитьСтроку(Ном);
...
Пока СпрТМЦ.НайтиПоРеквизиту("Артикул",Артикул,1)=1 Цикл
Если (СпрТМЦ.НайтиПоРеквизиту("Артикул",Артикул,1)=1) И (СпрТМЦ.Наименование=ТМЦ) Тогда                  
НоваяНакладная.НоваяСтрока();
НоваяНакладная.УстановитьАтрибут("ТМЦ",СпрТМЦ.ТекущийЭлемент());                  
НоваяНакладная.УстановитьАтрибут("Кво",Кво);
...

Но так, наверное, получится зацикливание, т.е. как сделать чтобы 1С искала следующий артикул.
Как изменить данный код с применением: Условие(<ЛогическоеВыражение>);

Всего записей: 541 | Зарегистр. 05-07-2007 | Отправлено: 17:59 25-03-2008
FOLD

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Lihonosov
Нах тебе цикл, сделай запросом я  пример покажу но  чуть попзже счас некогда.

Всего записей: 1238 | Зарегистр. 26-01-2004 | Отправлено: 18:11 25-03-2008
FOLD

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Lihonosov

Цитата:
Но так, наверное, получится зацикливание, т.е. как сделать чтобы 1С искала следующий артикул.  
Как изменить данный код с применением: Условие(<ЛогическоеВыражение>);

Конечно зациклится.. Ну вот смотри, конструктором слепить запрос дело пяти минут
 

Код:
ПеремАртикула ="11111";  
    
    ПеремНаименование ="Ботинки";
    
    //Создание объекта типа Запрос
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса =  
    "//{{ЗАПРОС(Сформировать)
    |ТМЦ = Справочник.Номенклатура.ТекущийЭлемент;
    |Артикул = Справочник.Номенклатура.Артикул;
    |Наименование = Справочник.Номенклатура.Наименование;
    |Группировка ТМЦ;
    |Условие(СокрЛП(Артикул) = ПеремАртикула);
    |Условие(СокрЛП(Наименование) = ПеремНаименование);
    |"//}}ЗАПРОС
    ;
    // Если ошибка в запросе, то выход из процедуры
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
        Возврат;
    КонецЕсли;
 
 
    Пока Запрос.Группировка(1) = 1 Цикл  
 
      НоваяНакладная.НоваяСтрока();  
       НоваяНакладная.ТМЦ = Запрос.ТМЦ;
    ............        
     КонецЦикла;  

 
Убрав одно из условий в запросе , ты в обходе группировки можешь еще какие-то условия для отбора использовать, или не убирая условия, смотри   сам , как тебе нужно
 
И по поводу установитьатибут .есть правила или  даже не правила, вообщем 1С задает  тон, как что писать... и в данном случае всегда писали так
 
 НоваяНакладная.Контрагент = Контрагент
 
 НоваяНакладная.НоваяСтрока();  
 НоваяНакладная.ТМЦ = СпрТМЦ.ТекущийЭлемент();      
 
 
 
    

Всего записей: 1238 | Зарегистр. 26-01-2004 | Отправлено: 09:40 26-03-2008 | Исправлено: FOLD, 09:42 26-03-2008
valerka78



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
FOLD
Запрос для новичка это сложно имхо, циклом проще и понятнее, тем более, что по большому счету, яйца теже, токо вид сбоку
Lihonosov
Сформулируй задачу, а то я не могу разобрать что тебе именно надо.

Всего записей: 248 | Зарегистр. 16-01-2006 | Отправлено: 10:17 26-03-2008
FOLD

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
valerka78

Цитата:
Запрос для новичка это сложно имхо, циклом проще и понятнее

Если сложно - объяснение :
Данный запрос выбирает из справочника номенклатура ВСЕ  элементы с
Реквизитом - заданным в переменной ПеремАртикула  
Наименованием - заданным в переменной ПеремНаименование
 
Обход группировки запроса( в данном случае Элемента спр.Номенклатура), позволяет перебрать КАЖДЫЙ элемент выборки , и соответсвенно сделать с ним что надо.
 
А что касается задания, то скажи как более оптимально перебрать в  цикле каждый элемент с определенным значением реквизита Артикул ?

Всего записей: 1238 | Зарегистр. 26-01-2004 | Отправлено: 10:42 26-03-2008 | Исправлено: FOLD, 10:44 26-03-2008
valerka78



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ПеремАртикул = "Строка"
 
СпрТМЦ.ВыбратьЭлементы();
Пока СпрТМЦ.ПолучитьЭлемент() = 1 Цикл
    Если СокрЛП(СпрТМЦ.Артикул.Наименование) = ПеремАртикул Тогда
       бла-бла-бла..
    КонецЕсли;
КонецЦикла;
 
все

Всего записей: 248 | Зарегистр. 16-01-2006 | Отправлено: 10:53 26-03-2008
FOLD

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
valerka78
Это, конечно, здорово . Но слово "оптимально"  не вписывается в твой ответ
 
 
Добавлено:
valerka78
Если чел новичок то пусть сразу иучится писать нормально, а не как проще
 
 
Добавлено:
Время, которок придется потратить на освение конструктора запроса, займет ну не зная минут 30 наверно

Всего записей: 1238 | Зарегистр. 26-01-2004 | Отправлено: 10:56 26-03-2008
Manunja



Newbie
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Подскажите плиз!У меня такая проблема, я в 1с ке формирую таблицу с данными, мне ее надо сохранить в формате csv.
Например такие строки как 68,3000,123.25
Делаю это через Excel и вуаля, он мирно преобразовывает мою строку в вид
68 300 0123.25
Я так понимаю, надо как то преобразовать мои данные в текстовый формат, как это сделать?

Всего записей: 20 | Зарегистр. 29-08-2007 | Отправлено: 11:04 26-03-2008
valerka78



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Manunja
Честно говоря ничего не понял
FOLD
В целом да, но все-же не во всех случаях запрос оптимальней цикла Запрос оправдывает себя при работе с большим объемом данных и в случае одиночного обращения к ним, а в остальных случаях им злоупотреблять не стоит

Всего записей: 248 | Зарегистр. 16-01-2006 | Отправлено: 11:09 26-03-2008
FOLD

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
valerka78
Дык кто ж с этим спорит..
но мы же теоритечски рассуждаем, а конкретную задчу рассматриваем
 
Добавлено:
 те НЕ теритически  
 
Добавлено:
Если уж и говорить теоритически - то нужно говорить не о циклах, а о "переборах"-
 в 77 -это оправдано, применемо.. и то всегда нужно рассматривать кокретную задачу
А в 8  ноборот запросы -  предпочтителней.  
А " циклы" - от них никуда не дется ,это основа

Всего записей: 1238 | Зарегистр. 26-01-2004 | Отправлено: 11:16 26-03-2008
Lihonosov

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Сформулируй задачу, а то я не могу разобрать что тебе именно надо.

Происходит импорт накладных в 1С и текстового файла.
Алгоритм добавления:
1. Если артикул и наименование в справочнике ТМЦ соответствует артикулу и наименованию в текстовом файле, то просто добавить новую строку в табличную часть накладной. (с этим разобрался).
2. Если артикул не найден, то импорт отменяется и создается новый элемент в справочнике ТМЦ и форма этого элемента показывается пользователю (с этим тоже разобрался).
3. Если артикул сходится, но наименование нет, то допустим нужно было найти артикул "777" с наименованием "Мой артикул" и количеством 10 шт. нужно найти первый попавшийся и проверить его остаток и если он больше требуемого то просто занести в новую строку, а если количество найденного нехватает (допустим у первого найденного остаток 7), то искать следующий и если следующий найден то добавить 3 шт. следующего артикул (если конечно столько есть на остатке) и т.д.
Что у меня сейчас не выходит:
1. Как "перейти" к поиску следующего артикула (в 3 пункте).
2. Как получить остаток определенного артикула.

Всего записей: 541 | Зарегистр. 05-07-2007 | Отправлено: 11:37 26-03-2008
Lihonosov

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
FOLD
valerka78
У меня так получилось получить остатки:

Код:
СпрТМЦ=СоздатьОбъект("Справочник.ТМЦ");
СпрТМЦ.НайтиПоНаименованию("Мой ТМЦ",0,1);
Остаток=СоздатьОбъект("БухгалтерскиеИтоги");
СпрМестоХранения=СоздатьОбъект("Справочник.МестаХранения");
СпрМестоХранения.НайтиПоНаименованию("Мое место хранения",0,1);
Сообщить(Остаток.СКД("201",3,,СпрМестоХранения.ТекущийЭлемент(),СпрТМЦ.ТекущийЭлемент(),));

Ваше мнение. Какие могут возникнуть проблемы с данным решением?

Всего записей: 541 | Зарегистр. 05-07-2007 | Отправлено: 18:17 26-03-2008
   

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » 1C Программирование и поддержка
ShIvADeSt (03-04-2009 02:03): Продолжение тут
http://forum.ru-board.com/topic.cgi?forum=33&topic=10256#1


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2025

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru