• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

1c 6.0: Помогите разобраться с формулой

  • Автор темы glad
  • Дата начала
Статус
Закрыто для дальнейших ответов.
G

glad

никак не пойму что значит допустим СП{3}.1
в макроязыке находил похожее, но не то..
вот формула:
!П_ПОЛУЧАТЕЛЬ = ""+?(СТРДЛИНА(СП{3}.1)=0\""+СН{3}\""+СП{3}.1)+?(СТРДЛИНА(СП{3}.2)=0\""\", "+СП{3}.2)+": "+СП{3}.5+", "+СП{3}.3+", код банка "+СП{3}.4

Никак не разберусь.. кажется что это Субконто.. но как это понимать не ясно..
Помогите плз.

Заранее благодарю!
 
B

BorisM

Добрый день!

Скорее всего, в этом примере, выбираются какие то данные из документа.
Насколько я помню:
СП{3} - означает что взять субконто из реквизита № 3 шапки документа.
СП{|3} - означает взять субконто из третьего реквизита табличной части (|-вот эта вот черточка, типа признак табличной части).
Еще у субконто есть "Параметры". В списке конкретного вида субконто есть внизу формы такая кнопка "Параметры". У каждого параметра есть номер. Параметры можно свободно удалять и добавлять во время работы системы.
Так вот, запись вида СП{3}.1 - означает взять параметр № 1 из субконто, указанного в реквизите шапки № 3.

Еще одна токность с параметрами субконто. Система никак не возражает против их удаления, но в базе они остаются! Было дело, наступал на эти грабли ;-) Т.е. смотришь в списке - ничего нет. А данные откуда то берутся! Если встретиться подобная ситуация, то достаточно какому либо субконто добавить параметр под нужным номером, и у остальных он тоже будет виден со всеми старыми значениями. Но у данного конкретного субконто оно затрется новым значением.

Сорри, если много текста... Просто ностальгия :)
 
G

glad

Добрый день!

Скорее всего, в этом примере, выбираются какие то данные из документа.
Насколько я помню:
СП{3} - означает что взять субконто из реквизита № 3 шапки документа.
СП{|3} - означает взять субконто из третьего реквизита табличной части (|-вот эта вот черточка, типа признак табличной части).
Еще у субконто есть "Параметры". В списке конкретного вида субконто есть внизу формы такая кнопка "Параметры". У каждого параметра есть номер. Параметры можно свободно удалять и добавлять во время работы системы.
Так вот, запись вида СП{3}.1 - означает взять параметр № 1 из субконто, указанного в реквизите шапки № 3.

Еще одна токность с параметрами субконто. Система никак не возражает против их удаления, но в базе они остаются! Было дело, наступал на эти грабли ;-) Т.е. смотришь в списке - ничего нет. А данные откуда то берутся! Если встретиться подобная ситуация, то достаточно какому либо субконто добавить параметр под нужным номером, и у остальных он тоже будет виден со всеми старыми значениями. Но у данного конкретного субконто оно затрется новым значением.

Сорри, если много текста... Просто ностальгия :)

Спасибо огромное! Вроде как понял. :)
а вот это:
?(СТРДЛИНА(СП{3}.1)=0\""+СН{3}\""+СП{3}.1)
посмотрев в руководство по макроязыку я нашел такую конструкцию ?(условие|выражение1|выражение2), аналогичная конструкция есть в С++. немного по другому записывается, но все же..
а в этой записи непонятно где операнды.. :)
 
B

BorisM

Мануала под рукой нет, поэтому вспоминаю по памяти :)

До первого слеша - это условие, если оно выполниться, выполняем то, что после первого слеша "\",
если НЕ выполняется - то, что после второго слеша.

Ну или по другому:

?(Условие\Делаем это, если истина\Делаем это, если ложь).
 
G

glad

Мануала под рукой нет, поэтому вспоминаю по памяти :)

До первого слеша - это условие, если оно выполниться, выполняем то, что после первого слеша "\",
если НЕ выполняется - то, что после второго слеша.

Ну или по другому:

?(Условие\Делаем это, если истина\Делаем это, если ложь).

Спасибо большое!
 
G

glad

Подскажите пожайлуста еще а то уже почти 2 дня мучаюсь.. Вот если СП{3}.1 это то что вы написали..
то я беру вторую форму и вней пишу практически тоже самое, но в ответ получаю лишь пустую строку :( Может знаете в чем проблема..

ЗЫ
Мне бы просто сделать это задание и отвязаться от бухгалтеров хоть на чуть-чуть :)

Да, и что значит СН{1|2} ? ;)
 
B

BorisM

Трудно сказать, не видя формы. Но проверьте такие моменты: во первых, это значение нужно присвоить какому-то полю. Т.е. у нас должен быть реквизит, с номером больше чем 3. Пускай будет 4 :) И в колонке "Выр", напротив третьего! реквизита шапки, написать следующее:
ЗН4=СП{3}.1 Теперь когда мы перейдем с третьего поля в четвертое, значение должно вычислиться.
Еще может быть такое, что не совпадают типы значений.
Можно попробовать вместо СП использовать СН. К сожалению, я уже не помню, чем они различаются. Хотел найти книжку на работе, но похоже она безвозратно утеряна. Еще дома посмотрю, может она там.
Насчет выражения СН{1|2} - то тут память меня окончательно подвела, а в единственной базе, завалявшейся на компе с 98 года я такого выражения не нашел ;)
И еще, можно поподробнее, что и откуда нужно вытащить, и для чего. Я попробую смоделировать у себя такую ситуацию. Может что-то и получиться :)
 
G

glad

Пасиб. Буду думать. Извините, что долго не появлялся, просто загрузили так, что хоть убейся.. :)
 
G

glad

Вот вопрос еще появился:
1С6.0: Сделал документ на внутреннее перемещение.. вернее доработал то что было.. так вод там есть кнопочка проводки, как я посмотрел это дело работает и для других отчетов, тоесть меняю формулу формирования проводок в одном отчете, меняется и в другом. Вообщем сделал этот отчет взял 1sbcons и sttrn.gfr и переписал их поверх существующих,
посмотрел вроде как нормально выводятся, но вот другие отчеты зависящие от этих формирований проводок просто не открывались.. тоесть сделаешь документ, откроются, а если сделал документ, перед изменением, то просто не открыватся.. почему? :)
 
B

BorisM

Добрый день!
Я так понимаю, речь идет о внешних отчетах. То что переписан файл sttrn.gfr, это в принципе нормально, если это новая версия старого отчета, то так и нужно. А вот замена 1sbcons.dbf - это плохо. Дело в том, что это очень хитрый файлик с хитрой структурой. В нем хранятся настройки документов, их проводки, параметры субконто и еще какие-то настройки. Если бухи не добавляли туда новых параметров субконто, или не добавлялись или не менялись формы/проводки документов, то может не все так страшно. Попробуй сделать полную реиндексацию базы. Удали все файлы *.CDX и запусти 1С в монопольном режиме. Но только сначала на ЛОКАЛЬНОЙ копии базы!!! Если все будет нормально, то тогда уже на рабочей... но все равно предварительно нужно сделать еще одну копию, на всякий случай. В нашем деле, как у хирургов, главное не навредить :)
 
G

glad

Я все вернул к прежнему состоянию, тоесть заранее сохранил 1sbconf.dbf. Но как тогда перенести то что мне нужно на другую базу ? Потому как настройки проводок, ну тоесть формулы для проведения они "зашиты" (как показала практика <_< ) в 1sbconf'е. А как по-другому перенести ума не приложу.
Если только не попробовать заменить и переиндексировать.. Но если Вы говорите, что это плохо - значит это плохо.
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!